| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080 |
- using System.Threading;
- using GalaSoft.MvvmLight;
- using GalaSoft.MvvmLight.Command;
- using GalaSoft.MvvmLight.Ioc;
- using Microsoft.Practices.ServiceLocation;
- using Muchinfo.MTPClient.Bank.Views;
- using Muchinfo.MTPClient.CustomException;
- using Muchinfo.MTPClient.Data;
- using Muchinfo.MTPClient.Data.Enums;
- using Muchinfo.MTPClient.Data.Helper;
- using Muchinfo.MTPClient.Data.Model;
- using Muchinfo.MTPClient.Data.Model.Account;
- using Muchinfo.MTPClient.Data.Model.Bank;
- using Muchinfo.MTPClient.Infrastructure.Cache;
- using Muchinfo.MTPClient.Infrastructure.Helpers;
- using Muchinfo.MTPClient.Infrastructure.MessageBox;
- using Muchinfo.MTPClient.Infrastructure.Utilities;
- using Muchinfo.MTPClient.IService;
- using Muchinfo.MTPClient.Resources;
- using Muchinfo.PC.Common.Extensions;
- using Muchinfo.PC.Common.Helpers;
- using Muchinfo.WPF.Controls.Keyboard;
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Linq;
- using System.Threading.Tasks;
- using System.Windows;
- using System.Windows.Controls;
- namespace Muchinfo.MTPClient.Bank.ViewModels
- {
- public class AmountManagerViewModel : IdentifyCodeTimerViewModel
- {
- #region Fields
- private FundsApplyType _currentApplyType;
- private TradeAccount _currentTradeAccount;
- private IBankService _bankService;
- private EncryptKey _encryptKey;
- private Window _OKCommandTemp;
- private AreaAccount _areaAccount; //会员账号信息
- private ILoginService _loginService; ////
- private bool _isGetIdentifyCode=false; ////是否取验证码
- private ObservableCollection<SigningBank> _signBankList = new ObservableCollection<SigningBank>();
- private List<OutMoneyThresholdRatio> _moneyThresholdRatios; ////出金阈值比率
- /// <summary>
- /// 当前选中的交易账号
- /// </summary>
- public TradeAccount CurrentTradeAccount
- {
- get
- {
- return _currentTradeAccount;
- }
- set
- {
- Set(() => CurrentTradeAccount, ref _currentTradeAccount, value);
- }
- }
- /// <summary>
- /// 签约银行列表
- /// </summary>
- public ObservableCollection<SigningBank> SignBankList
- {
- get { return _signBankList; }
- set { Set(() => SignBankList, ref _signBankList, value); }
- }
- private SigningBank _currentSigningBank = new SigningBank();
- /// <summary>
- /// 当前选中签约银行
- /// </summary>
- public SigningBank CurrentSigningBank
- {
- get
- {
- return _currentSigningBank;
- }
- set
- {
- Set(() => CurrentSigningBank, ref _currentSigningBank, value);
- this.PhoneBankPassword = string.Empty;
- if (value != null)
- {
- SetSignBankInfo();
- }
- RaisePropertyChanged(() => IsShowInTips);
- }
- }
- public string InAmountTips
- {
- get
- {
- if (CurrentSigningBank != null)
- {
- return string.Format(Client_Resource.text_inWindow_ShowInGuideTips, CurrentSigningBank.card_Acct);
- }
- return string.Empty;
- }
- }
- /// <summary>
- /// 是否显示入金提示
- /// </summary>
- public bool IsShowInTips
- {
- get
- {
- if (CurrentSigningBank == null)
- {
- return false;
- }
- return _fundsApplyType == FundsApplyType.Deposit && CurrentSigningBank.CusBankID==3; ////中信银行入金显示提示
- }
-
- }
-
- /// <summary>
- ///银行列表
- /// </summary>
- List<Banks> AccoumtBankSignList;
- private FundsApplyType _fundsApplyType;
- #endregion Fields
- #region Constructors
- public AmountManagerViewModel(FundsApplyType applyType)
- {
- _fundsApplyType = applyType;
- _bankService = ServiceLocator.Current.GetInstance<IBankService>();
- IsBusy = true;
-
- CurrentTradeAccount = UserManager.CurrentTradeAccount;
- _loginService = SimpleIoc.Default.GetInstance<ILoginService>();
- CurrentApplyType = ApplyTypes.FirstOrDefault(z => z.Key == applyType).Key;
- // _bankService.QueryBankInfo(QueryBankInfoCallback, QueryErrorCallback);
- // var signBankList = _bankService.QueryBankCustomerSign(UserManager.CurrentTradeAccount);
- var accountid = UserManager.CurrentTradeAccount.AccountId;
- //if (UserManager.CurrentTradeAccount.FundsAccounts != null && UserManager.CurrentTradeAccount.FundsAccounts.Any())
- //{
- // accountid = UserManager.CurrentTradeAccount.FundsAccounts[0].AccountId;
- //}
- _bankService.QueryBankCustomerSignInfo(accountid, SearchBankCustomerSignCallback, ErrorCallback);
- ////计算浮动盈亏
- MessengerHelper.QuoteRegister<List<QuoteGoods>>(this, MessengerTokens.ReceiveRealTimeQuote, (quoteList) =>
- {
- UseAmount = FloatPLExpressions.SetUseAmount(_moneyThresholdRatios);
- });
- }
- public void QueryBankInfoCallback(List<Banks> list)
- {
- AccoumtBankSignList = list;
- if (UserManager.CurrentTradeAccount.AccountType == eUserType.USERTYPE_INVESTOR)
- {
- _bankService.QueryBankCustomerSign(UserManager.CurrentTradeAccount.AccountCode, QueryBankCustomerSignCallback, QueryErrorCallback);
- }
- else
- {
- ///查询会员账号信息
- _bankService.QueryMemberAccountInfo(UserManager.CurrentTradeAccount.AccountId, QueryAreaAccountCallback, QueryErrorCallback);
- }
- }
- private void SearchBankCustomerSignCallback(List<SigningBank> list)
- {
- IsBusy = false;
-
- System.Windows.Application.Current.Dispatcher.BeginInvoke(new Action(() =>
- {
- if (list != null && list.Any())
- {
-
- // list = list.Where((item) => item.SignStatusType == SignStatus.SignStatus_Signed).ToList();
-
- foreach (var item in list)
- {
- switch (CurrentApplyType)
- {
- case FundsApplyType.Deposit:
- if (item.IsAllowInMoney == 1)
- {
- SignBankList.Add(item);
- }
- break;
- case FundsApplyType.Withdraw:
- if (item.IsAllowOutMoney == 1)
- {
- SignBankList.Add(item);
- }
- break;
- }
- }
- if (SignBankList.Any())
- {
- CurrentSigningBank = SignBankList.FirstOrDefault();
- }
- }
- // if (applyType == FundsApplyType.Withdraw)
- if (CurrentApplyType == FundsApplyType.Withdraw)
- {
- Task.Factory.TryStartNew(() =>
- {
- // var useAmount =
- CalcUseAmount();
- // UseAmount = Math.Round(useAmount, 2, MidpointRounding.AwayFromZero);
- }, () => IsBusy = false);
- }
- }));
- }
- private void QueryAreaAccountCallback(List<AreaAccount> areaAccounts)
- {
- if (areaAccounts != null && areaAccounts.Any())
- {
- _areaAccount = areaAccounts[0];
- _bankService.QueryBankCustomerSign(_areaAccount.AccountCode, QueryBankCustomerSignCallback, QueryErrorCallback);
- }
- }
- private void QueryBankCustomerSignCallback(ObservableCollection<SigningBank> signBankList)
- {
- IsBusy = false;
- System.Windows.Application.Current.Dispatcher.BeginInvoke(new Action(() =>
- {
- if (signBankList != null && signBankList.Any())
- {
- foreach (var item in signBankList)
- {
- switch (CurrentApplyType)
- {
- case FundsApplyType.Deposit:
- //if (item.IsAllowinMoney == 1) todo:银行联调忽略状态
- //{
- SignBankList.Add(item);
- //}
- break;
- case FundsApplyType.Withdraw:
- // if (item.IsAllowoutMoney == 1) todo:银行联调忽略状态
- //{
- SignBankList.Add(item);
- //}
- break;
- }
- }
- if (null != AccoumtBankSignList && AccoumtBankSignList.Any())
- {
- foreach (var item in SignBankList)
- {
- foreach (var k in AccoumtBankSignList)
- {
- if (item.BankId == k.BankId)
- {
- item.CusBankName = k.BankName;
- item.Name = k.BankName;
- // item.AccountName = UserManager.CurrentTradeAccount.CustomerName;
- }
- if (item.BranchId == k.BankId)
- {
- item.BranchBankName = k.BankName;
- }
- }
- }
- }
- if (SignBankList.Any())
- {
- CurrentSigningBank = SignBankList.FirstOrDefault();
- }
- }
- // if (applyType == FundsApplyType.Withdraw)
- if (CurrentApplyType == FundsApplyType.Withdraw)
- {
- Task.Factory.TryStartNew(() =>
- {
- // var useAmount =
- CalcUseAmount();
- // UseAmount = Math.Round(useAmount, 2, MidpointRounding.AwayFromZero);
- }, () => IsBusy = false);
- }
- }));
- }
- #endregion Constructors
- #region Public Properties
- private string _titleName;
- public string TitleName
- {
- get
- {
- return this._titleName;
- }
- set
- {
- Set(() => TitleName, ref this._titleName, value);
- }
- }
- public Dictionary<FundsApplyType, string> ApplyTypes
- {
- get
- {
- return new Dictionary<FundsApplyType, string>
- {
- {FundsApplyType.Deposit, FundsApplyType.Deposit.Discription()},
- {FundsApplyType.Withdraw, FundsApplyType.Withdraw.Discription()}
- };
- }
- }
- public FundsApplyType CurrentApplyType
- {
- get
- {
- return this._currentApplyType;
- }
- set
- {
- Set(() => CurrentApplyType, ref this._currentApplyType, value);
- if (CurrentApplyType == FundsApplyType.Deposit)
- {
- OutVisibility = Visibility.Collapsed;
- InVisibility = Visibility.Visible;
- this.TitleName = Muchinfo.MTPClient.Resources.Client_Resource.TradeTreeMenu_AmountInApply;
- }
- else
- {
- OutVisibility = Visibility.Visible;
- InVisibility = Visibility.Collapsed;
- this.TitleName = Muchinfo.MTPClient.Resources.Client_Resource.TradeTreeMenu_AmountOutApply;
- }
- }
- }
- private decimal _useAmount;
- /// <summary>
- ///可取资金
- /// </summary>
- public decimal UseAmount
- {
- get
- {
- return _useAmount;
- }
- set
- {
- value = value < 0 ? 0 : value; //出金不显示负数
- Set(() => UseAmount, ref _useAmount, value);
- }
- }
- /// <summary>
- /// 计算可出金额
- /// </summary>
- /// <returns></returns>
- private void CalcUseAmount()
- {
- // 可出资金1 = 期末余额 - 交易占用 - 交易冻结 - 出金冻结 - 交割冻结 - 发售冻结 - 摘牌冻结 - 托管冻结 - 浮动亏损
- //可出资金2 = 期初余额 - 当日出金 - 出金冻结 [(如果当日入金可出的话) + 当日入金]
- //可出资金3 = min(可出资金1, 可出资金2) - max(期末余额阀值, 人工冻结, 出金阀值, 净值阀值)
- IsBusy = true;
-
- var accountid = UserManager.CurrentTradeAccount.AccountId;
- //if (UserManager.CurrentTradeAccount.FundsAccounts != null && UserManager.CurrentTradeAccount.FundsAccounts.Any())
- //{
- // accountid = UserManager.CurrentTradeAccount.FundsAccounts[0].AccountId;
- //}
- _loginService.QueryOutMoneyThresholdRatio(accountid, QueryOutMoneyThresholdSuccess, QueryOutMoneyError);
-
- }
- private void QueryTaAccountSuccess(List<FundsAccount> fundsAccounts)
- {
- //Application.Current.Dispatcher.BeginInvoke(new Action(() =>
- //{
- MessengerHelper.DefaultSend(string.Empty, MessengerTokens.UpdateAccountCommand); ////计算浮动盈亏
- Thread.Sleep(500);////等待计划浮动盈亏完成
- UseAmount = FloatPLExpressions.SetUseAmount(_moneyThresholdRatios);
- //}));
- }
- /// <summary>
- /// 获取手机验证码
- /// </summary>
- public RelayCommand IdentifyCodeCommand
- {
- get
- {
- return new RelayCommand(() =>
- {
- if (CurrentSigningBank == null)
- {
- return;
- }
-
- var IndentityReq = new IdentifyCodeReq()
- {
- AccountCode = CurrentSigningBank.AccountCode,
- CusBankID = CurrentSigningBank.CusBankID + string.Empty,
- Amount = Money,
- CustomerSignId = CurrentSigningBank.CustomerSignId,
- CustomerName = CurrentSigningBank.CustomerName,
- BankCode = CurrentSigningBank.BankId,
- AccountType = CurrentSigningBank.AccountType,
- BankAccountNo = CurrentSigningBank.BankAccount,
- CardNum = CurrentSigningBank.CredentialNumber,
- CardType = CurrentSigningBank.CredentialType,
- MobilePhone = CurrentSigningBank.MobilePhone,
- Currency = (UserManager.CurrentTradeAccount.FundsAccounts == null || !UserManager.CurrentTradeAccount.FundsAccounts.Any())
- ? "RMB" : UserManager.CurrentTradeAccount.FundsAccounts[0].Currency,
- };
- IndentityReq.TradeType = CurrentApplyType == FundsApplyType.Deposit
- ? BankTradeType.inAmount
- : BankTradeType.OutAmount;
- _bankService.BankGetIdentifyCode(IndentityReq, QueryIdentifyCodeSuccess, QueryErrorCallback);
- IsMoneyBoxEnable = false;
- this.Start();
- },(()=>Money>0));
- }
- }
- public void QueryIdentifyCodeSuccess(bool success)
- {
- _isGetIdentifyCode = true;
- }
- private string _identifyCode;
- public string IdentifyCode
- {
- get { return _identifyCode; }
- set { Set(() => IdentifyCode, ref _identifyCode, value); }
- }
-
- /// <summary>
- /// 查询
- /// </summary>
- /// <param name="ratios"></param>
- private void QueryOutMoneyThresholdSuccess(List<OutMoneyThresholdRatio> ratios)
- {
- _moneyThresholdRatios = ratios;
- var accountid = UserManager.CurrentTradeAccount.AccountId;
- //if (UserManager.CurrentTradeAccount.FundsAccounts != null && UserManager.CurrentTradeAccount.FundsAccounts.Any())
- //{
- // accountid = UserManager.CurrentTradeAccount.FundsAccounts[0].AccountId;
- //}
- _loginService.QueryTaAccount(accountid, QueryTaAccountSuccess, QueryErrorCallback);
- }
- /// <summary>
- ///
- /// </summary>
- private void QueryOutMoneyError(ErrorEntity errorEntity)
- {
- var errorMsg = string.Format("{0}:{1}", errorEntity.RequestFunc, ErrorManager.FormatErrorMsg(errorEntity)); //错误信息显示到状态
- LogInfoHelper.WriteInfo(errorMsg);
- var accountid = UserManager.CurrentTradeAccount.AccountId;
- //if (UserManager.CurrentTradeAccount.FundsAccounts != null && UserManager.CurrentTradeAccount.FundsAccounts.Any())
- //{
- // accountid = UserManager.CurrentTradeAccount.FundsAccounts[0].AccountId;
- //}
- _loginService.QueryTaAccount(accountid, QueryTaAccountSuccess, QueryErrorCallback);
- }
-
- /// <summary>
- /// 打开键盘命令
- /// </summary>
- public RelayCommand<Control> OpenKeyboardCommand
- {
- get
- {
- return new RelayCommand<Control>((control) =>
- {
- PassWordKeyBoard.SetTouchScreenKeyboard(control, true);
- control.Focus();
- });
- }
- }
- private Visibility _outVisibility;
- /// <summary>
- /// 显示出金申请
- /// </summary>
- public Visibility OutVisibility
- {
- get
- {
- return _outVisibility;
- }
- set
- {
- Set(() => OutVisibility, ref _outVisibility, value);
- }
- }
- private Visibility _inVisibility;
- /// <summary>
- /// 显示入金申请
- /// </summary>
- public Visibility InVisibility
- {
- get
- {
- return _inVisibility;
- }
- set
- {
- Set(() => InVisibility, ref _inVisibility, value);
- }
- }
- private string _remark;
- /// <summary>
- /// 备注
- /// </summary>
- public string Remark
- {
- get
- {
- return _remark;
- }
- set
- {
- Set(() => Remark, ref _remark, value);
- }
- }
- private decimal _money;
- /// <summary>
- /// 出入金金额
- /// </summary>
- public decimal Money
- {
- get
- {
- ChineseNumber = FormatHelper.ConvertToChinese(_money); //设置大小写
- if (_money.Equals(0) || _money < 0)
- {
- return 0;
- }
- return _money;
- }
- set
- {
- Set(() => Money, ref _money, value);
- if (_isGetIdentifyCode)
- {
- IsShowModifyTips = true;
- }
- }
- }
- private bool _isShowModifyTips;
- /// <summary>
- /// 是否显示修改金额提示
- /// </summary>
- public bool IsShowModifyTips
- {
- get { return _isShowModifyTips; }
- set { Set(() => IsShowModifyTips, ref _isShowModifyTips, value);}
- }
-
- private string _password;
- /// <summary>
- /// 账户密码
- /// </summary>
- public string Password
- {
- get { return _password; }
- set { Set(() => Password, ref _password, value); }
- }
- private string _chineseNumber;
- /// <summary>
- /// 转换成大写数字
- /// </summary>
- public string ChineseNumber
- {
- get { return _chineseNumber; }
- set { Set(() => ChineseNumber, ref _chineseNumber, value); }
- }
- private bool _isBusy;
- /// <summary>
- /// 是否在忙
- /// </summary>
- public bool IsBusy
- {
- get { return _isBusy; }
- set { Set(() => IsBusy, ref _isBusy, value); }
- }
- private string _busyContent;
- public string BusyContent
- {
- get { return _busyContent; }
- set { Set(() => BusyContent, ref _busyContent, value); }
- }
- //private BankAccountInfo _bankAccountInfo = new BankAccountInfo();
- ///// <summary>
- ///// 银行信息
- ///// </summary>
- //public BankAccountInfo BankAccountInfo
- //{
- // get { return _bankAccountInfo; }
- // set
- // {
- // Set(() => BankAccountInfo, ref _bankAccountInfo, value);
- // }
- //}
- private bool _phoneBankPassIsEnabled;
- /// <summary>
- /// 是否输入电话银行密码
- /// </summary>
- public bool PhoneBankPassIsEnabled
- {
- get { return _phoneBankPassIsEnabled; }
- set { Set(() => PhoneBankPassIsEnabled, ref _phoneBankPassIsEnabled, value); }
- }
- private bool _BankPassIsEnabled;
- /// <summary>
- /// 是否输入 银行取款密码
- /// </summary>
- public bool BankPassIsEnabled
- {
- get { return _BankPassIsEnabled; }
- set { Set(() => BankPassIsEnabled, ref _BankPassIsEnabled, value); }
- }
- /// <summary>
- /// 是否显示密码
- /// </summary>
- public bool IsPassWordEnabled
- {
- get
- {
- return BankPassIsEnabled || PhoneBankPassIsEnabled;
- }
- }
- private bool _isShowIdentifyCode;
- /// <summary>
- /// 是否显示验证码
- /// </summary>
- public bool IsShowIdentifyCode
- {
- get { return _isShowIdentifyCode; }
- set { Set(() => IsShowIdentifyCode, ref _isShowIdentifyCode, value); }
- }
- private bool _isMoneyBoxEnable=true;
- /// <summary>
- /// 是否可输入金额
- /// </summary>
- public bool IsMoneyBoxEnable
- {
- get { return _isMoneyBoxEnable; }
- set { Set(() => IsMoneyBoxEnable, ref _isMoneyBoxEnable, value); }
- }
-
-
- private string _phoneBankPassword;
- /// <summary>
- /// 电话银行密码
- /// </summary>
- public string PhoneBankPassword
- {
- get
- {
- return _phoneBankPassword;
- }
- set
- {
- Set(() => PhoneBankPassword, ref _phoneBankPassword, value);
- }
- }
- #endregion Public Properties
- /// <summary>
- /// 确定
- /// </summary>
- public RelayCommand<AmountManagerView> OKCommand
- {
- get
- {
- return new RelayCommand<AmountManagerView>((view) =>
- {
- var caption = CurrentApplyType == FundsApplyType.Deposit ? Muchinfo.MTPClient.Resources.Client_Resource.Bank_InCashTips : Muchinfo.MTPClient.Resources.Client_Resource.Bank_OutCashTips;
- var successMessage = CurrentApplyType == FundsApplyType.Deposit ? Muchinfo.MTPClient.Resources.Client_Resource.Bank_InCash : Muchinfo.MTPClient.Resources.Client_Resource.Bank_OutCash;
- if (Money <= 0)
- {
- MessageBoxHelper.ShowInfo(string.Format(Muchinfo.MTPClient.Resources.Client_Resource.Bank_CashGreatThanZero, successMessage), caption);
- return;
- }
- if (string.IsNullOrEmpty(Password))
- {
- MessageBoxHelper.ShowInfo(Muchinfo.MTPClient.Resources.Client_Resource.Bank_InputCashPassword, caption);
- return;
- }
- if (Password.Length < 6)
- {
- MessageBoxHelper.ShowInfo(Muchinfo.MTPClient.Resources.Client_Resource.Bank_CashPasswordNotLess6Bit, caption);
- return;
- }
- if (CurrentApplyType == FundsApplyType.Withdraw && Money > UseAmount)
- {
- MessageBoxHelper.ShowInfo(Muchinfo.MTPClient.Resources.Client_Resource.Bank_OutCashNotGreatAvailable, caption);
- return;
- }
- if (IsPassWordEnabled)
- {
- if (string.IsNullOrEmpty(PhoneBankPassword))
- {
- MessageBoxHelper.ShowInfo(Muchinfo.MTPClient.Resources.Client_Resource.Bank_InputBankPassword, caption);
- return;
- }
- if (PhoneBankPassword.Length < 6)
- {
- MessageBoxHelper.ShowInfo(Muchinfo.MTPClient.Resources.Client_Resource.Bank_TelephoPasswordNotLess6Bit, caption);
- return;
- }
- }
- _OKCommandTemp = view;
- //验证账号信息,出入金交互。
- IsBusy = true;
- BusyContent = string.Format(Muchinfo.MTPClient.Resources.Client_Resource.Bank_SubmitInfo_Waiting, successMessage);
- // BankSignResult bankDealStatus;
- Amount amount = new Amount()
- {
- FundsApplyType = CurrentApplyType,
- Money = Money,
- Password = Password,
- Remark = Remark
- };
- amount.AccountId = UserManager.CurrentTradeAccount.AccountId;// 操作账号
- amount.AccountType = UserManager.CurrentTradeAccount.AccountType;
- amount.AccountCode = CurrentSigningBank.AccountCode;
-
- _bankService.OutInMoney(amount, this.CurrentSigningBank, OutInMoneyCallback, ErrorCallback);
- //LogManager.WriteFundApplyLog(CurrentApplyType,
- // UserManager.CurrentTradeAccount,
- // Money,this.CurrentSigningBank);
- });
- }
- }
- private BankSignResult temp_bankDealStatus;
- private void OutInMoneyCallback(BankSignResult bankDealStatus)
- {
- var caption = CurrentApplyType == FundsApplyType.Deposit ? Muchinfo.MTPClient.Resources.Client_Resource.Bank_InCashTips : Muchinfo.MTPClient.Resources.Client_Resource.Bank_OutCashTips;
- var successMessage = CurrentApplyType == FundsApplyType.Deposit ? Muchinfo.MTPClient.Resources.Client_Resource.Bank_InCash : Muchinfo.MTPClient.Resources.Client_Resource.Bank_OutCash;
- temp_bankDealStatus = bankDealStatus;
- Application.Current.Dispatcher.BeginInvoke(new Action(() =>
- {
- //IsBusy = false;
- if (bankDealStatus.ReturnCode == 0)
- {
- if (IsPassWordEnabled)
- {
- if (_encryptKey == null)
- {
- var reqKey = new EncryptKeyRequest()
- {
- Currency = (UserManager.CurrentTradeAccount.FundsAccounts == null
- || !UserManager.CurrentTradeAccount.FundsAccounts.Any())
- ? "RMB"
- : UserManager.CurrentTradeAccount.FundsAccounts[0].Currency,
- CusBankId = CurrentSigningBank.CusBankID+string.Empty,
- };
- // _encryptKey =
- _bankService.QueryEncryptKey(reqKey, QueryEncryptKeyCallback, QueryErrorCallback);
- }
- }
- else
- {
- IsBusy = false;
- if (bankDealStatus.Status == BankDealStatus.BankDealStatus__Succeed)
- {
- MessageBoxHelper.ShowSuccess(
- string.Format(Muchinfo.MTPClient.Resources.Client_Resource.Bank_ApplaySuccess, successMessage),
- caption);
- }
- else if (bankDealStatus.Status == BankDealStatus.BankDealStatus__Pend)
- {
- MessageBoxHelper.ShowSuccess(
- string.Format(Muchinfo.MTPClient.Resources.Client_Resource.Bank_ApplaySubmit, successMessage), caption);
- }
- else if (bankDealStatus.Status == BankDealStatus.BankDealStatus__BankWebComfirm)
- {
- try
- {
- IPHelper.OpenWebAddress(bankDealStatus.WebAddress);
- }
- catch (Exception ex)
- {
- throw new MuchinfoException(ExceptionManager.OpenIEError);
- }
- finally
- {
- string tips = string.Format(Client_Resource.Tips_BankDepositWebComfrim,
- CurrentApplyType.Discription());
- var messageBox = new MsgAlter(bankDealStatus.WebAddress, tips)
- {
- Owner = Application.Current.MainWindow,
- WindowStartupLocation = WindowStartupLocation.CenterOwner
- };
- messageBox.ShowDialog();
- }
- }
- if (_OKCommandTemp != null)
- _OKCommandTemp.DialogResult = true;
- }
- }
- else
- {
- ErrorManager.ShowReturnError(bankDealStatus.ReturnCode, caption);
- }
- }));
- }
- private void QueryEncryptKeyCallback(EncryptKey encryptKey)
- {
- _encryptKey = encryptKey;
- var encryptHelper = new TasEncryptHelper();
- string encryptPWD = encryptHelper.EncryptPassd(_encryptKey.SecretKey, PhoneBankPassword);
- var bankDealStatus = temp_bankDealStatus;
- var req = new SignBankPDW()
- {
- AccountCode = CurrentSigningBank.AccountCode,
- ExchTicket = bankDealStatus.ExchTicket,
- ExtOperatorID = bankDealStatus.ExtOperatorID,
- CusBankId = CurrentSigningBank.CusBankID + string.Empty,
- BankAccountPWD = encryptPWD,
- Currency = (UserManager.CurrentTradeAccount.FundsAccounts == null
- || !UserManager.CurrentTradeAccount.FundsAccounts.Any())
- ? "RMB"
- : UserManager.CurrentTradeAccount.FundsAccounts[0].Currency,
- };
- //if (UserManager.CurrentTradeAccount.AccountType == eLoginUserType.LOGINUSERTYPE_TRADER && _areaAccount != null)
- //{
- // req.AccountCode = _areaAccount.AccountCode;
- //}
- // var result = _bankService.SignBankPwd(req, UserManager.CurrentTradeAccount.LoginCode);
- _bankService.SignBankPwd(req, SignBankPwdCallback, ErrorCallback);
- }
-
- private void SignBankPwdCallback(int result)
- {
- IsBusy = false;
- var caption = CurrentApplyType == FundsApplyType.Deposit ? Muchinfo.MTPClient.Resources.Client_Resource.Bank_InCashTips : Muchinfo.MTPClient.Resources.Client_Resource.Bank_OutCashTips;
- var successMessage = CurrentApplyType == FundsApplyType.Deposit ? Muchinfo.MTPClient.Resources.Client_Resource.Bank_InCash : Muchinfo.MTPClient.Resources.Client_Resource.Bank_OutCash;
- Application.Current.Dispatcher.BeginInvoke(new Action(() =>
- {
- if (result != 0) //密码
- {
- ErrorManager.ShowReturnError(result, caption);
- }
- else
- {
- MessageBoxHelper.ShowSuccess(
- string.Format(
- Muchinfo.MTPClient.Resources.Client_Resource.Bank_ApplaySuccess,
- successMessage),
- caption);
- if (_OKCommandTemp != null)
- _OKCommandTemp.DialogResult = true;
- }
- }));
- }
- public void ErrorCallback(ErrorEntity error)
- {
- IsBusy = false;
- Application.Current.Dispatcher.BeginInvoke(new Action(() =>
- {
- var caption = CurrentApplyType == FundsApplyType.Deposit ? Muchinfo.MTPClient.Resources.Client_Resource.Bank_InCashTips : Muchinfo.MTPClient.Resources.Client_Resource.Bank_OutCashTips;
- ErrorManager.ShowReturnError(error, caption);
- }));
- }
- public void QueryErrorCallback(ErrorEntity error)
- {
- IsBusy = false;
- if (!_isClose)
- Application.Current.Dispatcher.BeginInvoke(new Action(() =>
- {
- var caption = CurrentApplyType == FundsApplyType.Deposit ? Muchinfo.MTPClient.Resources.Client_Resource.Bank_InCashTips : Muchinfo.MTPClient.Resources.Client_Resource.Bank_OutCashTips;
- ErrorManager.ShowReturnError(error, caption);
- }));
- }
- /// <summary>
- /// 取消命令
- /// </summary>
- public RelayCommand<AmountManagerView> CancelCommand
- {
- get
- {
- return new RelayCommand<AmountManagerView>((view) =>
- {
- view.DialogResult = false;
- });
- }
- }
- /// <summary>
- /// 刷新可出资金
- /// </summary>
- public RelayCommand RefreshCommand
- {
- get
- {
- return new RelayCommand(() =>
- {
- //todo:更新可出资金
- Task.Factory.TryStartNew(() =>
- {
- // var useAmount =
- CalcUseAmount();
- // UseAmount = Math.Round(useAmount, 2, MidpointRounding.AwayFromZero);
- }, () => IsBusy = false);
- });
- }
- }
- private void SetSignBankInfo()
- {
- string inOutshowfield = string.Empty;
- if (CurrentApplyType == FundsApplyType.Deposit)
- {
- inOutshowfield = CurrentSigningBank.InShowField;
- }
- else
- {
- inOutshowfield = CurrentSigningBank.OutShowField;
- }
- if (inOutshowfield != null)
- {
- string[] showField = inOutshowfield.Split(',');
- PhoneBankPassIsEnabled = showField.Any(m => m == ((int)ShowFieldStatus.ShowField_BankAccountPWD) + string.Empty );
- BankPassIsEnabled = showField.Any(m => m == ((int)ShowFieldStatus.ShowField_Draw_IdentifyCode) + string.Empty);
- RaisePropertyChanged(() => IsPassWordEnabled);
- IsShowIdentifyCode =
- showField.Any(m => m == ((int) ShowFieldStatus.ShowField_IdentifyCode) + string.Empty);
- //this.PhoneBankPassIsEnabled = value != null ? true : false;
- }
- // IsBusy = true;
- //BusyContent = Muchinfo.MTPClient.Resources.Client_Resource.Bank_GetBankInfomation_waiting;
- //System.Threading.Tasks.Task.Factory.TryStartNew(
- //() =>
- //{
- // // SigningBank configInfo =
- // _bankService.QueryBankParamConfig(CurrentSigningBank.CusBankID + string.Empty, QueryBankParamConfigCallback, QueryErrorCallback);
- //}, () => IsBusy = false);
- }
- private void QueryBankParamConfigCallback(List<SigningBank> signingBank)
- {
- System.Windows.Application.Current.Dispatcher.BeginInvoke(new Action(() =>
- {
- if (signingBank != null)
- {
- foreach (var sb in signingBank)
- {
- if (CurrentSigningBank.CusBankID != sb.CusBankID)
- {
- continue;
- }
- string inOutshowfield = string.Empty;
- if (CurrentApplyType == FundsApplyType.Deposit)
- {
- inOutshowfield = sb.InShowField;
- }
- else
- {
- inOutshowfield = sb.OutShowField;
- }
- if (inOutshowfield != null)
- {
- string[] showField = inOutshowfield.Split(',');
- string value = showField.FirstOrDefault(m => m == "8");
- this.PhoneBankPassIsEnabled = value != null ? true : false;
- }
- }
- }
- //this.PhoneBankPassIsEnabled = (CurrentSigningBank != null && CurrentSigningBank.CusBankID == "10") ? true : false;
- }));
- }
- private bool _isClose = false;
- public override void Cleanup()
- {
- MessengerHelper.QuoteUnregister< List<QuoteGoods>>(this, MessengerTokens.ReceiveRealTimeQuote);
- base.Cleanup();
- _isClose = true;
- }
- }
- }
|