| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539 |
-
- using GalaSoft.MvvmLight;
- using Muchinfo.MTPClient.Data.Enums;
- using Muchinfo.MTPClient.Data.Helper;
- using Muchinfo.MTPClient.Resources;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Linq;
- namespace Muchinfo.MTPClient.Data.Model.Account
- {
- /// <summary>
- /// 交易帐户类
- /// </summary>
- public class TradeAccount : ObservableObject
- {
- #region Fields
- private const decimal c_DefautAgreeAmount = 1000000m;
- private decimal _balance;
- private ObservableCollection<FundsAccount> _fundsAccounts;
- private List<MemberPosition> _memberPositions; //会员头寸
- //资金账号密码
- private string _tradePassword;
- #endregion Fields
- #region Properties
- #region Public Properties
- /// <summary>
- /// 余额
- /// </summary>
- public decimal Balance
- {
- get { return _balance; }
- set { Set(() => Balance, ref _balance, value); }
- }
- /// <summary>
- /// md5方式加密后的加密密码
- /// </summary>
- public string _md5Password;
- public string Md5Password
- {
- get { return _md5Password; }
- set
- {
- Set(() => Md5Password, ref _md5Password, value);
- }
- }
- /// <summary>
- /// 风险率
- /// </summary>
- public string FundsUsageRate
- {
- get
- {
- if (this.AccountType != eUserType.USERTYPE_INVESTOR)
- {
- if (MemberAccountInfo != null)
- {
- return MemberAccountInfo.Rate.ToString("p2");
- }
- }
- else
- {
- if (FundsAccounts != null && FundsAccounts.Any() && FundsAccounts[0].CurrentNetWorth > 0)
- {
- ////暂时使用第一个账户信息
- return FundsAccounts[0].RiskRatioDisplay;
- }
- }
- return "0%";
- }
- }
- /// <summary>
- /// 交易账号
- /// </summary>
- public ObservableCollection<FundsAccount> FundsAccounts
- {
- get
- {
- return _fundsAccounts;
- }
- set
- {
- if (_fundsAccounts != null && _fundsAccounts.Any())
- {
- _fundsAccounts[0].PropertyChanged -= TradeAccount_PropertyChanged;
- }
- Set(() => FundsAccounts, ref _fundsAccounts, value);
- if (_fundsAccounts != null && _fundsAccounts.Any())
- {
- _fundsAccounts[0].PropertyChanged += TradeAccount_PropertyChanged;
- }
- }
- }
- void TradeAccount_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
- {
- //throw new System.NotImplementedException();
- if (e.PropertyName == "CurrentNetWorth")
- {
- RaisePropertyChanged(() => FundsUsageRate);
- RaisePropertyChanged(() => UsableFunds);
- }
- }
- /// <summary>
- /// 会员头寸
- /// </summary>
- public List<MemberPosition> MemberPositions
- {
- get
- {
- return _memberPositions;
- }
- set
- {
- Set(() => MemberPositions, ref _memberPositions, value);
- RaisePropertyChanged(() => FundsUsageRate);
- }
- }
- /// <summary>
- /// 会员账号风险率配置
- /// </summary>
- public List<RiskRateParam> RiskRateParams { get; set; }
- /// <summary>
- /// 会员账号风险率配置参数
- /// </summary>
- public RiskRateParam AccountRiskRate
- {
- get
- {
- if (RiskRateParams != null && RiskRateParams.Any())
- {
- return RiskRateParams[0];
- }
- return new RiskRateParam();
- }
- }
- /// <summary>
- /// 资金账号密码
- /// </summary>
- public string TradePassword
- {
- get { return _tradePassword; }
- set { _tradePassword = value; }
- }
- /// <summary>
- /// 获取可用资金
- /// </summary>
- public decimal UsableFunds
- {
- get
- {
- if (FundsAccounts != null && FundsAccounts.Any())
- { //暂时使用第一个账户信息
- return FundsAccounts[0].AvailMargin;
- }
- return 0m;
- }
- }
- /// <summary>
- /// 允许最大持仓金额
- /// </summary>
- public decimal MaxAgreeAmount
- {
- get
- {
- if (FundsAccounts != null && FundsAccounts.Any())
- {
- ////暂时使用第一个账户信息
- return FundsAccounts[0].MaxAgreeAmount;
- ////.UsedMargin / FundsAccounts[0].CurrentNetWorth * 100;
- }
- return c_DefautAgreeAmount;
- }
- }
- private MemberAccountInfo _memberAccountInfo;
- /// <summary>
- /// 会员账户信息
- /// </summary>
- public MemberAccountInfo MemberAccountInfo
- {
- get { return _memberAccountInfo; }
- set { Set(() => MemberAccountInfo, ref _memberAccountInfo, value); }
- }
- /// <summary>
- /// 交易所代码
- /// </summary>
- public uint ExchAreaId { get; set; }
- /// <summary>
- /// 账户是否已锁定
- /// </summary>
- public bool AccountIsLock { get; set; }
- /// <summary>
- /// 内部资金账号
- /// </summary>
- public string TaAccountCode { get; set; }
- /// <summary>
- /// 证件类型
- /// </summary>
- public eCardType CardType { get; set; }
- /// <summary>
- /// 证件号码
- /// </summary>
- public string CardNum { get; set; }
- /// <summary>
- /// 会员证件类型
- /// </summary>
- public eCardType MemberCardType { get; set; }
- /// <summary>
- /// 会员证件号码
- /// </summary>
- public string MemberCardNum { get; set; }
- /// <summary>
- ///
- /// </summary>
- public SexType Sex { get; set; }
- #endregion Public Properties
- #endregion Properties
- #region 业务服务属性
- /// <summary>
- /// 机构名称
- /// </summary>
- public string AreaName { get; set; }
- /// <summary>
- /// 会员名称
- /// </summary>
- public string MemberName { get; set; }
- /// <summary>
- /// 用户名
- /// </summary>
- public string CustomerName { get; set; }
- /// <summary>
- /// 用户状态
- /// </summary>
- public eAccountStatus AccountStatus { get; set; }
- /// <summary>
- /// 显示用户状态
- /// </summary>
- public string AccountStatusDisplay
- {
- get
- {
- return AccountStatus.Discription();
- }
- }
- /// <summary>
- /// 是否显示上面的资金信息
- /// </summary>
- public bool IsShowHeaderFundInfo
- {
- get
- {
- if (AccountType != eUserType.USERTYPE_INVESTOR)
- return false;
- if (FundsAccounts != null && FundsAccounts.Count == 1)
- return true;
- else
- return false;
- }
- }
- public bool IsShowHeaderFundInfoEx
- {
- get
- {
- if (AccountType == eUserType.USERTYPE_INVESTOR)
- return false;
- if (FundsAccounts != null && FundsAccounts.Count == 1)
- return true;
- else
- return false;
- }
- }
- /// <summary>
- /// 账户类型
- /// </summary>
- public eUserType AccountType { get; set; }
- /// <summary>
- /// 所属机构代码
- /// </summary>
- public string AreaCode { get; set; }
- /// <summary>
- /// 机构ID
- /// </summary>
- public uint AreaId { get; set; }
- /// <summary>
- /// 所属经纪人id
- /// </summary>
- public uint BrokerAccountId { get; set; }
- /// <summary>
- /// 风险率类型ID
- /// </summary>
- public uint RiskRatioId { get; set; }
- /// <summary>
- /// 风险率计算方法
- /// </summary>
- public eRiskRateMode RiskRatioCalcMode { get; set; }
- /// <summary>
- /// 类型名称
- /// </summary>
- public string RiskRatioName { get; set; }
- /// <summary>
- /// 服务端系统时间
- /// </summary>
- public ulong SystemTime { get; set; }
- /// <summary>
- /// 内容权限组编号
- /// </summary>
- public int ContRightCode { get; set; }
- /// <summary>
- /// 用户编号
- /// </summary>
- public uint CustomerId { get; set; }
- /// <summary>
- /// 用户ID
- /// </summary>
- public ulong AccountId { get; set; }
- /// <summary>
- /// 资金账号ID
- /// add by dk
- /// </summary>
- public ulong FundsAccountId { get; set; }
- /// <summary>
- /// 当前账号下有权限的资金账户ID列表
- /// </summary>
- public List<ulong> FundsAccountIds { get; set; }
- /// <summary>
- /// 会员机构ID
- /// </summary>
- public uint MemberAreaId { get; set; }
- /// <summary>
- /// 功能权限组编号
- /// </summary>
- public int FuncRightCode { get; set; }
- /// <summary>
- /// 登录账号
- /// </summary>
- public ulong LoginID { get; set; }
- /// <summary>
- /// 登录密码修改状态
- /// </summary>
- public int LoginPasswordModType { get; set; }
- /// <summary>
- /// 所属会员代码
- /// </summary>
- public string MemberCode { get; set; }
- /// <summary>
- /// 对手资金账号
- /// </summary>
- public string OtherTradeCode { get; set; }
- /// <summary>
- /// 风险率类型编号
- /// </summary>
- public uint RiskRateId { get; set; }
- /// <summary>
- /// 账户
- /// </summary>
- public string AccountCode { get; set; }
- /// <summary>
- /// 连接令牌
- /// </summary>
- public string Token { get; set; }
- /// <summary>
- /// 通信公钥
- /// </summary>
- public string PublicKey { get; set; }
- /// <summary>
- /// 是否已修改密码
- /// </summary>
- /// <value>The has updated password.</value>
- public uint HasUpdatedPwd { get; set; }
- /// <summary>
- /// 当前密码输入错误次数
- /// </summary>
- /// <value>The password wrong count.</value>
- public uint PwdWrongCnt { get; set; }
-
- /// <summary>
- /// 登陆账号锁定密码输入错误次数
- /// </summary>
- /// <value>The password wrong lock count.</value>
- public uint PwdWrongLockCnt { get; set; }
- /// <summary>
- /// 登陆账号锁定时长(小时)
- /// </summary>
- /// <value>The login lock hour number.</value>
- public uint LoginLockHourNum { get; set; }
- /// <summary>
- /// 终端系统信息
- /// </summary>
- public byte[] ClientSystemInfo { get; set; }
- /// <summary>
- /// 终端ID(登陆服务分配,用于通道交易关联链路)
- /// </summary>
- public ulong ClientId { get; set; }
- #endregion
- #region 用户设置
- ///// <summary>
- ///// 登录系统时间
- ///// </summary>
- //public DateTime LoginTime { get; set; }
- ///// <summary>
- ///// 登录系统时间
- ///// </summary>
- //public bool IsRememberSave { get; set; }
- /// <summary>
- /// 内容权限类型
- /// </summary>
- public string ContentRightType { get; set; }
- #endregion
- #region Methods
- #region Public Methods
- /// <summary>
- /// Returns a <see cref="System.String" /> that represents this instance.
- /// </summary>
- /// <returns>A <see cref="System.String" /> that represents this instance.</returns>
- public override string ToString()
- {
- return Client_Resource.Domain_AccountH + AccountCode + Client_Resource.Domain_AvailableFunds + UsableFunds + Client_Resource.Domain_FundUseRate + FundsUsageRate;
- }
- #endregion Public Methods
- /// <summary>
- /// 更新的风险率
- /// </summary>
- public void UpdataFundsUsageRate()
- {
- RaisePropertyChanged(() => FundsUsageRate);
- }
- private string _accountTitle;
- /// <summary>
- /// 账号标题
- /// </summary>
- public string AccountTitle
- {
- get
- {
- return this.ToString();
- }
- }
- /// <summary>
- /// 当前资金账号信息--用于计算风险率
- /// </summary>
- /// <value>The current funds account.</value>
- public FundsAccount CurrentFundsAccount
- {
- get {
- if (FundsAccounts != null)
- {
- return FundsAccounts.FirstOrDefault(z => z.AccountId == FundsAccountId);
- }
- return null;
- }
- }
- #endregion Methods
- }
- }
|