| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968 |
- using Muchinfo.MTPClient.Data.Enums;
- using Muchinfo.MTPClient.Infrastructure.LinkProxy;
- using Muchinfo.MTPClient.Infrastructure.LinkProxy.Enum;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Net;
- using System.Net.NetworkInformation;
- using System.Text;
- using System.Text.RegularExpressions;
- using System.Threading.Tasks;
- using System.Windows;
- using System.Xml.Linq;
- using GalaSoft.MvvmLight.Ioc;
- using Muchinfo.MTPClient.Data.Model;
- using Muchinfo.MTPClient.Data.Model.Account;
- using Muchinfo.MTPClient.Infrastructure.Cache;
- using Muchinfo.MTPClient.Infrastructure.Helpers;
- using Muchinfo.MTPClient.Infrastructure.MessageBox;
- using Muchinfo.MTPClient.IService;
- namespace Muchinfo.MTPClient.Infrastructure.Utilities
- {
- /// <summary>
- /// ApplicationParameter类
- /// </summary>
- public class ApplicationParameter
- {
- #region 私有字段
- private static DateTime _serverTimeNow;
- private static int _showChart = 0;
- private static System.Timers.Timer _serverTimer;
- /// <summary>
- /// 基础时间 1970/01/01 00:00:00
- /// </summary>
- private static DateTime _basicDateTime = new DateTime(1970, 1, 1, 0, 0, 0);
- #endregion
- #region 公有静态属性
- /// <summary>
- /// 获取服务器当前时间
- /// </summary>
- public static DateTime ServerTimeNow
- {
- get { return _serverTimeNow; }
- set { _serverTimeNow = value; }
- }
- /// <summary>
- /// 获取基础时间 1970/01/01 00:00:00
- /// </summary>
- public static DateTime BasicDateTime
- {
- get { return _basicDateTime; }
- }
-
- /// <summary>
- /// 配置是否显示图表
- /// </summary>
- public static int ShowChart
- {
- get { return _showChart; }
- set { _showChart = value; }
- }
- /// <summary>
- /// 配置是否显示报表
- /// </summary>
- public static string ReportAddress { get; set; }
- /// <summary>
- /// 配置F10地址
- /// </summary>
- public static string FtenAddress { get; set; }
- private static string _isShowIdentifyingCode;
- /// <summary>
- /// 是否显示验证码【 0:不显示,1:显示,2:错误后显示】
- /// </summary>
- public static string IsShowIdentifyingCode
- {
- get { return _isShowIdentifyingCode; }
- set { _isShowIdentifyingCode = value; }
- }
- private static int _MarketTradeDefaultPriceMode = -1;
- /// <summary>
- /// 做市模式默认价格类型:若商品为做市模式,则默认成交的价格类型为“市价”【备注:0为市价,1为限价】
- /// </summary>
- public static int MarketTradeDefaultPriceMode
- {
- get { return _MarketTradeDefaultPriceMode; }
- set { _MarketTradeDefaultPriceMode = value; }
- }
- private static int _BidTradeDefaultPriceMode = -1;
- /// <summary>
- /// 竞价模式默认价格类型: 若商品为竞价模式,则默认成交的价格类型为“限价”【备注:0为市价,1为限价】
- /// </summary>
- public static int BidTradeDefaultPriceMode
- {
- get { return _BidTradeDefaultPriceMode; }
- set { _BidTradeDefaultPriceMode = value; }
- }
- /// <summary>
- /// 是否显示总浮动盈亏
- /// </summary>
- public static int IsShowSumPL { get; set; }
- /// <summary>
- /// 会员风控间隔时间
- /// </summary>
- public static int MemberMonitorTick { get; set; }
- /// <summary>
- /// 取历史Tick数据量
- /// </summary>
- public static short QuoteTickCount
- {
- get;
- set;
- }
- /// <summary>
- /// 是否显示风险提示
- /// </summary>
- public static int IsShowRateTips { get; set; }
- /// <summary>
- /// 是否显示托管计划
- /// </summary>
- public static bool IsShowDepositPlanMarket
- {
- get;
- set;
- }
- /// <summary>
- /// 服务超时时间
- /// </summary>
- public static int ServerTimeOut { get; set; }
- /// <summary>
- /// 交易地址
- /// </summary>
- public static string BizAddress { get; set; }
- /// <summary>
- /// 行情地址
- /// </summary>
- public static string QuoteAddress { get; set; }
- /// <summary>
- /// 游客行情地址
- /// </summary>
- public static string GuestQuoteAddress { get; set; }
- /// <summary>
- /// 开户注册地址
- /// </summary>
- public static string RegAccountAddress { get; set; }
- /// <summary>
- /// 是否显示预埋单功能
- /// </summary>
- public static int IsPrePostVisible { get; set; }
- /// <summary>
- /// 是否限制预埋单数量:【是否限制预埋单数量(不限制:0,限制数量:1)】
- /// </summary>
- public static decimal MaxPrePostOrderLot { get; set; }
- /// <summary>
- /// 默认下单数量
- /// </summary>
- public static decimal DefaultOrderLot { get; set; }
- private static int _defaultOpenMode = 1; //edit by dk 默认为1 建仓方式,枚举值发生变化20171128
- /// <summary>
- /// 设置下单默认建仓模式(1:建仓 2平仓;先平后建:3)
- /// </summary>
- public static int DefaultOpenMode
- {
- get { return _defaultOpenMode; }
- set { _defaultOpenMode = value; }
- }
- /// <summary>
- /// 提货单打印地址
- /// </summary>
- public static string TakeOrderPrintAdress { get; set; }
- #endregion
- #region 系统参数属性
- /// <summary>
- /// 官网
- /// </summary>
- public static string WebSite { get; set; }
- /// <summary>
- /// 系统布局样色
- /// </summary>
- public static string LayoutStyle { get; set; }
- /// <summary>
- /// 系统颜色主题
- /// </summary>
- public static string ColorStyle { get; set; }
- /// <summary>
- /// 应用程序版本
- /// </summary>
- public static string Version
- {
- get;
- set;
- }
- /// <summary>
- /// 显示表格的样式
- /// </summary>
- public static string DataGridColor { get; set; }
- /// <summary>
- /// 显示登录界面提示信息
- /// </summary>
- public static string LoginRemark { get; set; }
- /// <summary>
- /// 免责条款文件路径
- /// </summary>
- public static string EscapeClauseFilePath
- {
- get
- {
- return Path.Combine(UserManager.SysConfigFolderPath, "EscapeClause.rtf");
- }
- }
- /// <summary>
- /// 应用程序默认升级文件夹
- /// </summary>
- public static string UpdateFolderName { get; set; }
- /// <summary>
- /// 发送邮件地址
- /// </summary>
- public static string ToAddress { get; set; }
- /// <summary>
- /// 应用程序升级地址
- /// </summary>
- public static string UpdateAddress { get; set; }
- public static string TradeSystemName { get; set; }
- public static string ExchangeName { get; set; }
- public static string MarketName { get; set; }
- /// <summary>
- /// 登录Guid
- /// </summary>
- public static string LoginGuid { get; set; }
- /// <summary>
- /// 图片扩展名
- /// </summary>
- public static string ImageExtension { get; set; }
- /// <summary>
- /// 锁屏时间(0时不锁屏)
- /// </summary>
- public static int LockSreenTime { get; set; }
- /// <summary>
- /// 是否显示锁屏背景图片【0:不显示,1显示】
- /// </summary>
- private static int _IsShowBGLockSreen = 0;
- public static int IsShowBGLockSreen
- {
- get { return _IsShowBGLockSreen; }
- set { _IsShowBGLockSreen = value; }
- }
- /// <summary>
- /// 同步账号信息周期
- /// </summary>
- public static int SyncAccountCycle { get; set; }
- private static string _cusBankNetSign = string.Empty;
- /// <summary>
- /// 网银端签约的银行
- /// </summary>
- public static string CusBankNetSign
- {
- get { return _cusBankNetSign; }
- set { _cusBankNetSign = value; }
- }
- /// <summary>
- /// 配置是否显示银行绑卡解绑功能
- /// </summary>
- public static int IsConfigShowBingCard { get; set; }
- /// <summary>
- /// 网银端签约的提示信息
- /// </summary>
- public static string CusBankNetSignTipsInfo { get; set; }
- public static int DayQuoteInterval { get; set; }
- /// <summary>
- /// 订单在市
- /// </summary>
- public static string OrderOnMarket { get; set; }
- /// <summary>
- /// 已成交
- /// </summary>
- public static string OrderTraded { get; set; }
- /// <summary>
- /// 单据是否显示买卖方向
- /// </summary>
- public static int IsShowDirection { get; set; }
- /// <summary>
- /// 抬头保存的版本1.1.1.1 (自选.即期.竞价.混合)
- /// </summary>
- public static string ConfigHeadersVer { get; set; }
- /// <summary>
- /// 是否为对接新银行
- /// </summary>
- public static int NewBankPlatform { get; set; }
- /// <summary>
- /// 是否显示交割信息
- /// </summary>
- public static int IsDeliveryVisible { get; set; }
- /// <summary>
- /// 是否显示大字报价
- /// </summary>
- //public static int IsShowQuoteBoard
- //{
- // get; set;
- //}
- private static int _IsShowQuoteBoard = 0;
- /// <summary>
- /// 是否显示大字报价【默认不显示】
- /// </summary>
- public static int IsShowQuoteBoard
- {
- get { return _IsShowQuoteBoard; }
- set { _IsShowQuoteBoard = value; }
- }
- /// <summary>
- /// 发售列表头(1,2,)
- /// </summary>
- public static string SaleQuoteHeaders { get; set; }
- /// <summary>
- /// 是否显示五档委托量(大利市)
- /// </summary>
- public static int QuoteQueueInfo { get; set; }
- /// <summary>
- /// 竞价市场显示的字段
- /// </summary>
- public static string BidQuoteHeaders { get; set; }
- /// <summary>
- /// 混合市场显示的字段
- /// </summary>
- public static string BidMarketQuoteHeaders { get; set; }
- /// <summary>
- /// 做市市场显示的字段
- /// </summary>
- public static string MakeMarketQuoteHeaders { get; set; }
- /// <summary>
- /// 若商品为混合模式,则默认成交的价格类型为“限价”【备注:0为市价,1为限价】
- /// </summary>
- public static int XMarketDefaultPriceMode { get; set; }
- /// <summary>
- /// 若商品为混合模式,则默认不显示”【备注:0为不显示,1为显示】
- /// </summary>
- public static int XMarketShowMarketPrice { get; set; }
- /// <summary>
- /// 通道交易市场显示的字段
- /// </summary>
- public static string ChannelQuoteHeaders { get; set; }
- public static string Copyright { get; set; }
- /// <summary>
- /// 是否显示所有商品
- /// </summary>
- /// <value><c>true</c> if [show all goods]; otherwise, <c>false</c>.</value>
- public static bool ShowAllGoods { get; set; }
- /// <summary>
- /// 是否显示我的自选
- /// </summary>
- /// <value><c>true</c> if [show my selected goods]; otherwise, <c>false</c>.</value>
- public static bool ShowMySelectedGoods { get; set; }
- /// <summary>
- /// 是否显示外部交易所
- /// </summary>
- /// <value><c>true</c> if [show external exchage]; otherwise, <c>false</c>.</value>
- public static bool ShowExternalExchage { get; set; }
- /// <summary>
- /// 是否显示平仓
- /// </summary>
- /// <value><c>true</c> if [show close order]; otherwise, <c>false</c>.</value>
- public static bool ShowCloseOrder { get; set; }
- public static bool ShowOpenCloseOrder { get; set; }
- /// <summary>
- /// 是否显示下单界面的买卖价,来源config.xml
- /// </summary>
- public static bool ShowBuyOrSellPrice { get; set; }
-
- public static bool CanUseAllCloseOrder { get;set; }
- public static bool CanUseQuickClose { get;set; }
- public static bool CanUseBackHandOpen { get;set; }
- public static bool CanUseQuickLockOrder { get;set; }
- public static string PublishNetIpAddress { get; set; }
- #endregion
- #region 风管云平台
- /// <summary>
- /// 风管云平台服务地址
- /// </summary>
- public static string ErmcpAddress { get; set; }
- /// <summary>
- /// 风管云平台WEB端地址
- /// </summary>
- public static string ErmcpWebUrl { get; set; }
- #endregion
- #region 公有静态方法
- /// <summary>
- /// 从Config.xml读取系统配置
- /// </summary>
- public static void InitializeSystemConfig()
- {
- try
- {
- LoginGuid = Guid.NewGuid().ToString();
- var path = Path.Combine(UserManager.SysConfigFolderPath, "Config.xml");
- var xdoc = XDocument.Load(path);
- if (xdoc.Root == null) return;
- var config = (from e in xdoc.Root.Elements("Config")
- select new
- {
- QuoteAddress = (string)e.Element("QuoteAddress"),
- BizAddress = (string)e.Element("BizAddress"),
- UpdateAddress = (string)e.Element("UpdateAddress"),
- UpdateFolderName = (string)e.Element("UpdateFolderName"),
- LoginRemark = (string)e.Element("LoginRemark"),
- TradeSystemName = (string)e.Element("TradeSystemName"),
- GuestQuoteAddress = (string)e.Element("GuestQuoteAddress"),
- DayQuoteInterval = (string)e.Element("DayQuoteInterval"),
- RegAccountAddress = (string)e.Element("RegAccountAddress"),
- IsShowIdentifyingCode = (string)e.Element("IsShowIdentifyingCode"),
- ConfigHeadersVer = (string)e.Element("ConfigHeadersVer"),
- FtenAddress = (string)e.Element("FtenAddress"),
- ExchangeName = (string)e.Element("ExchangeName"),
- WebSite = (string)e.Element("WebSite"),
- LayoutStyle = (string)e.Element("LayoutStyle"),
- Copyright = (e.Element("Copyright") == null) ? "Copyright © 2020" : (string)e.Element("Copyright"),
- ShowAllGoods =e.Element("ShowAllGoods") == null || (bool)e.Element("ShowAllGoods"),
- ShowMySelectedGoods = e.Element("ShowMySelectedGoods") != null && (bool)e.Element("ShowMySelectedGoods"),
- ShowExternalExchage = e.Element("ShowExternalExchage") != null && (bool)e.Element("ShowExternalExchage"),
- ShowCloseOrder = e.Element("ShowCloseOrder") != null && (bool)e.Element("ShowCloseOrder"),
- ShowOpenCloseOrder = e.Element("ShowOpenCloseOrder") != null && (bool)e.Element("ShowOpenCloseOrder"),
- ShowBuyOrSellPrice = e.Element("ShowBuyOrSellPrice") != null && (bool)e.Element("ShowBuyOrSellPrice"),
- CanUseAllCloseOrder = e.Element("CanUseAllCloseOrder") != null && (bool)e.Element("CanUseAllCloseOrder"),
- CanUseQuickClose = e.Element("CanUseQuickClose") != null && (bool)e.Element("CanUseQuickClose"),
- CanUseBackHandOpen = e.Element("CanUseBackHandOpen") != null && (bool)e.Element("CanUseBackHandOpen"),
- CanUseQuickLockOrder = e.Element("CanUseQuickLockOrder") != null && (bool)e.Element("CanUseQuickLockOrder"),
- PublishNetIpAddress = (string)e.Element("PublishNetIpAddress"),
- ErmcpAddress = (string)e.Element("ErmcpAddress"),
- ErmcpWebUrl = (string)e.Element("ErmcpWebUrl"),
- }).FirstOrDefault();
- if (config == null) return;
- QuoteAddress = config.QuoteAddress;
- BizAddress = config.BizAddress;
- UpdateAddress = config.UpdateAddress;
- UpdateFolderName = config.UpdateFolderName;
- Version = Application.ResourceAssembly.GetName().Version.ToString();
- LoginRemark = config.LoginRemark;
- TradeSystemName = config.TradeSystemName;
- GuestQuoteAddress = config.GuestQuoteAddress;
- RegAccountAddress = config.RegAccountAddress;
- ConfigHeadersVer = config.ConfigHeadersVer;
- FtenAddress = config.FtenAddress;
- IsShowIdentifyingCode = config.IsShowIdentifyingCode;
- int interval = 0;
- int.TryParse(config.DayQuoteInterval, out interval);
- DayQuoteInterval = interval;
- ExchangeName = config.ExchangeName;
- WebSite = config.WebSite;
- LayoutStyle = config.LayoutStyle;
- Copyright = config.Copyright;
- ShowAllGoods = config.ShowAllGoods;
- ShowMySelectedGoods = config.ShowMySelectedGoods;
- ShowExternalExchage = config.ShowExternalExchage;
- ShowCloseOrder = config.ShowCloseOrder;
- ShowOpenCloseOrder = config.ShowOpenCloseOrder;
- ShowBuyOrSellPrice = config.ShowBuyOrSellPrice;
- CanUseAllCloseOrder = config.CanUseAllCloseOrder;
- CanUseQuickClose = config.CanUseQuickClose;
- CanUseBackHandOpen = config.CanUseBackHandOpen;
- CanUseQuickLockOrder = config.CanUseQuickLockOrder;
- PublishNetIpAddress = config.PublishNetIpAddress;
- ErmcpAddress = config.ErmcpAddress;
- ErmcpWebUrl = config.ErmcpWebUrl;
- ////初始化链路
- InitializeLink();
- }
- catch (Exception e)
- {
- throw e;
- }
- }
- /// <summary>
- /// 设置系统时间s
- /// </summary>
- /// <param name="seconds"></param>
- public static void SetSystemTime(ulong seconds)
- {
- seconds -= 60 * 60 * 8;
- long lTime = long.Parse(seconds + "0000000");
- TimeSpan toNow = new TimeSpan(lTime);
- var timeNow = TimeZone.CurrentTimeZone.ToLocalTime(_basicDateTime.Add(toNow));
- SetServerTime(timeNow);
- }
- /// <summary>
- /// 设置系统时间s
- /// </summary>
- /// <param name="seconds"></param>
- public static void SetSystemTime(int seconds)
- {
- seconds -= 60 * 60 * 8;
- var timeNow = TimeZone.CurrentTimeZone.ToLocalTime(_basicDateTime.AddMilliseconds(seconds));
- SetServerTime(timeNow);
- }
- /// <summary>
- /// 设置服务器时间
- /// </summary>
- /// <param name="serverTime">服务器时间</param>
- public static void SetServerTime(DateTime serverTime)
- {
- if (_serverTimer == null)
- {
- _serverTimer = new System.Timers.Timer(1000);
- _serverTimer.Elapsed += new System.Timers.ElapsedEventHandler(m_ServerTimer_Elapsed);
- }
- _serverTimer.Stop();
- _serverTimeNow = serverTime;
- _serverTimer.Start();
- }
- #endregion
- /// <summary>
- /// 判断是否显示市价
- /// </summary>
- public static bool CanMarketPrice(QuoteGoods currentGoods)
- {
- var external = CacheManager.CacheExchanges;
- var groups = CacheManager.CacheGoodsGroups;
- var isMarketPrice = "";
- if (groups != null && groups.Any())
- {
- groups.ForEach((group) =>
- {
- if (group.GoodsGroupid == currentGoods.GroupID)// 先用商品中的groupId 去 商品组中查找,找出ExchangeId
- {
- var exchangeId = group.ExChangeId;
- if (external != null && external.Any())
- {
- var exchaneInfo = external.Find((externalExchange) => exchangeId == externalExchange.ExchangeId);
- if (exchaneInfo != null)
- {
- isMarketPrice = exchaneInfo.IsMarketPrice;
- }
- }
- }
- });
- }
- if ("0".Equals(isMarketPrice)) // 不支持
- {
- return false;
- }
- else if ("1".Equals(isMarketPrice)) // 支持
- {
- return true;
- }
- return false;
- }
- #region 私有静态方法
- /// <summary>
- /// Handles the Elapsed event of the m_ServerTimer control.
- /// </summary>
- /// <param name="sender">The source of the event.</param>
- /// <param name="e">The <see cref="System.Timers.ElapsedEventArgs"/> instance containing the event data.</param>
- private static void m_ServerTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
- {
- _serverTimeNow = _serverTimeNow.AddSeconds(1);
- }
- /// <summary>
- /// 初始化链路
- /// </summary>
- private static void InitializeLink()
- {
- var quotationAddress = QuoteAddress.Split(':');
- var tradeAddress = BizAddress.Split(':');
- string quotationHost = string.Empty;
- string guestQuoteHost = string.Empty;
- string tradeHost = string.Empty;
- int quotationPort = 0, tradePort = 0, guestQuotePort = 0;
- if (quotationAddress.Length == 2)
- {
- quotationHost = quotationAddress[0];
- int.TryParse(quotationAddress[1], out quotationPort);
- }
- if (tradeAddress.Length == 2)
- {
- tradeHost = tradeAddress[0];
- int.TryParse(tradeAddress[1], out tradePort);
- }
- if (!string.IsNullOrWhiteSpace(GuestQuoteAddress))
- {
- var guestQuoteAdd = GuestQuoteAddress.Split(':');
- if (quotationAddress.Length == 2)
- {
- guestQuoteHost = guestQuoteAdd[0];
- int.TryParse(guestQuoteAdd[1], out guestQuotePort);
- }
- }
- LinkManager.Instance.Initialize(new LinkManagerParameters()
- {
- QuotationHost = quotationHost,
- QuotationPort = quotationPort,
- TradeHost = tradeHost,
- TradePort = tradePort,
- GuestQuotationHost = guestQuoteHost,
- GuestQuotationPort = guestQuotePort,
- TradeLinkeType = LinkType.TCP,
- TradeDatagramType = DatagramType.Protobuf
- });
- }
- #endregion
- #region 风管云平台
- /// <summary>
- /// 风管云平台参数更新方法,主要是通过GO服务更新相关配置信息
- /// </summary>
- public static bool UpdateErmcpParamete()
- {
- // 获取交易与行情 Host
- var jsonString = HttpUtility.HttpGet(ErmcpAddress);
- if (jsonString != null)
- {
- Dictionary<String, Object> dicJson =
- Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<String, Object>>(jsonString);
- Dictionary<String, String> dataJson =
- Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<String, String>>(dicJson["data"].ToString());
- LinkManager.Instance.Parameters.TradeHost = dataJson["tradeHost"];
- LinkManager.Instance.Parameters.TradePort = int.Parse(dataJson["tradePort"]);
- LinkManager.Instance.Parameters.QuotationHost = dataJson["quoteHost"];
- LinkManager.Instance.Parameters.QuotationPort = int.Parse(dataJson["quotePort"]);
- LinkManager.Instance.Parameters.GoCommonSearchUrl = dataJson["goCommonSearchUrl"];
- return true;
- }
- return false;
- }
- #endregion
- public static LockType _LockType = LockType.UnLock;// 锁定商品
- /// <summary>
- /// 适配自动止损止盈的功能-将本地设置的止盈止损上传到服务端去。由服务端处理
- /// </summary>
- /// <param name="newOrder"></param>
- /// <param name="order"></param>
- public static void MakeSpsl(NewEntrustOrder newOrder)
- {
- if (newOrder == null)
- {
- return;
- }
- var userInfo = UserManager.GetCurrentUserInfo();
- if (userInfo != null && userInfo.TradeParams != null)
- {
- var goodsParams = userInfo.TradeParams.AllGoodsForAutoEntrust;
- if (goodsParams != null && goodsParams.Count > 0)
- {
- var _params = goodsParams.FirstOrDefault(item => newOrder.GoodsId == item.GoodsId && newOrder.BuyOrSell == (Direction)item.Direction);// 在匹配商品的同时,还需要匹配买卖方向
- if (_params != null && newOrder.BuildType == OpenCloseMode.BUILDTYPE_OPEN) // 只有建仓时候才会考虑上传止盈止损
- {
- newOrder.SPPoint = _params.Profit;
- newOrder.SLPoint = _params.Loss;
- }
- }
- }
- }
- /// <summary>
- /// 交易所下商品组、商品的关系
- /// 1、交易所下有多个商品组,商品组下有多个商品。
- /// </summary>
- /// <returns></returns>
- public static void MakeExChangeGroupGoodsMap()
- {
- // uint是商品组的groupId ,商品的数量
- ExChangeCheckModel changeCheckModel = new ExChangeCheckModel();
- var allGoods = CacheManager.CacheGoodsBaseInfos;// 所有的商品
- foreach (QuoteGoods item in allGoods)
- {
- if (changeCheckModel.Group.ContainsKey(item.GroupID))
- {
- changeCheckModel.Group[item.GroupID].Add(item.GoodsId);
- }
- else
- {
- List<uint> goodsIds = new List<uint> {item.GoodsId};
- changeCheckModel.Group.Add(item.GroupID, goodsIds);
- }
- }
- // 查找交易所和商品组的关系
- var groups = CacheManager.CacheGoodsGroups;
- foreach (GoodsGroup goodsGroup in groups)
- {
- if (changeCheckModel.ExChangeGroup.ContainsKey(goodsGroup.ExChangeId))
- {
- changeCheckModel.ExChangeGroup[goodsGroup.ExChangeId].Add(goodsGroup.GoodsGroupid);
- }
- else
- {
- List<long> groupIds = new List<long>() {goodsGroup.GoodsGroupid};
- changeCheckModel.ExChangeGroup.Add(goodsGroup.ExChangeId, groupIds);
- }
- }
- CacheManager.LoadExChangeGroupGoods(changeCheckModel);
- }
- #region 获取ip地址
- private static string _publisgNetIp = "";
- public static string PublisgNetIp
- {
- get { return _publisgNetIp ?? HttpGetPublishNetIp(); }
- set { _publisgNetIp = value; }
- }
- /// <summary>
- /// 获取公网ip地址 --如果机器是局域网的,获取到的地址就是本机地址,如果电脑是拨号上网或者具有独立的公网IP的情况下,获取到的是公网地址
- /// </summary>
- /// <param name="netType">"" 表示本地所有ip,InterNetWork表示ipv类型的网络ip,InterNetworkV6 表示获取ipv6类型的网络ip地址</param>
- /// <returns></returns>
- private static string GetIp(string netType)
- {
- string hostName = Dns.GetHostName();
- IPAddress[] addresses = Dns.GetHostAddresses(hostName);
- List<string> ipsList = new List<string>();
- if (netType == string.Empty)
- {
- for (int i = 0; i < addresses.Length; i++)
- {
- ipsList.Add(addresses[i].ToString());
- }
- }
- else
- {
- for (int i = 0; i < addresses.Length; i++)
- {
- if (addresses[i].AddressFamily.ToString() == netType)
- {
- ipsList.Add(addresses[i].ToString());
- }
- }
- }
- for (int i = 0; i < ipsList.Count; i++)
- {
- if (ipsList[i].Equals("::1"))
- {
- continue;
- }
- return ipsList[i];
- }
- return "";
- }
- private static string GetNetIp()
- {
- //试试这个
- NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
- foreach (NetworkInterface ni in interfaces)
- {
- if (ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet)
- {
- foreach (UnicastIPAddressInformation ip in ni.GetIPProperties().UnicastAddresses)
- {
- if (ip.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
- {
- return ip.Address.ToString();
- }
- }
- }
- }
- return GetIp("");
- }
- public static void MakePublishNetIp()
- {
- _publisgNetIp = "";
- Task.Factory.StartNew(() =>
- {
- PublisgNetIp = HttpGetPublishNetIp();
- });
- }
- private static string HttpGetPublishNetIp()
- {
- if (_publisgNetIp != string.Empty)
- {
- return _publisgNetIp;
- }
- string ret = "";
- try
- {
- if (ApplicationParameter.PublishNetIpAddress == null ||
- ApplicationParameter.PublishNetIpAddress.Equals(""))
- {
- return GetNetIp();
- }
- else
- {
- string url = "";
- string encoding = "";
- if (ApplicationParameter.PublishNetIpAddress.Contains(@"|"))
- {
- string[] datas = ApplicationParameter.PublishNetIpAddress.Split(Convert.ToChar(@"|"));
- if (datas.Length > 1)
- {
- url = datas[0];
- encoding = datas[1];
- }
- }
- else
- {
- url = ApplicationParameter.PublishNetIpAddress;
- }
- if (encoding == string.Empty)
- {
- encoding = "gbk";
- }
- Encoding encode = Encoding.GetEncoding(encoding);
- MyWebClient MyWebClient = new MyWebClient(3*1000);
- MyWebClient.Headers.Add("User-Agent",
- "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36");
- MyWebClient.Credentials = CredentialCache.DefaultCredentials; //获取或设置用于向Internet资源的请求进行身份验证的网络凭据
- Byte[] pageData = MyWebClient.DownloadData(url); //从指定网站下载数据
- string pageHtml = encode.GetString(pageData); //如果获取网站页面采用的是GB2312,则 使用这句
- ret = parseHtml(pageHtml);
- if (ret != String.Empty)
- {
- return ret;
- }
- return GetNetIp();
- }
- }
- catch (Exception e)
- {
- if (ret == String.Empty)
- {
- GetNetIp();
- }
- }
- finally
- {
- if (ret == String.Empty)
- {
- GetNetIp();
- }
- }
- return GetNetIp();
- }
- private static string parseHtml(String pageHtml)
- {
- string ip = "";
- //Match m = Regex.Match(pageHtml, @"\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}");
- Match m = Regex.Match(pageHtml, @"((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)");
- if (m.Success)
- {
- return m.Value;
- }
- ip = pageHtml;
- return ip;
- }
- #endregion
- }
- }
|