예제 #1
0
        private void AccountMiningConfirmed(int cryptoId, MiningConfirmedModel model, WalletFactory _walletFactory, WalletStatementFactory _walletStatementFactory)
        {
            var wallet = _walletFactory.GetByAccountId(model.AccountId, cryptoId);

            if (wallet == null)
            {
                MiningConfirmedFaild(model, "Wallet is null");
                return;
            }
            if (wallet.FrozenBalance < model.Amount)
            {
                MiningConfirmedFaild(model, "Insufficient frozenbalance");
                return;
            }
            try
            {
                _walletFactory.Unfreeze(wallet.Id, model.Amount);
                _walletStatementFactory.Insert(new WalletStatement
                {
                    Action        = UserWalletStatementAction.AwardDeposit,
                    Amount        = model.Amount,
                    Balance       = wallet.Balance + model.Amount,
                    FrozenAmount  = -model.Amount,
                    FrozenBalance = wallet.FrozenBalance - model.Amount,
                    Remark        = null,
                    Timestamp     = DateTime.UtcNow,
                    WalletId      = wallet.Id
                });
            }
            catch (Exception ex)
            {
                MiningConfirmedFaild(model, (ex.InnerException == null ? ex.Message : ex.InnerException.Message));
            }
        }
예제 #2
0
        public ServiceResult Confirmed(MiningConfirmedModel model)
        {
            var result = new ServiceResult();

            /////////////////////////
            //receive接口已经直接加到了用户余额里,confirmed已不需要任何动作
            ////////////////////////
            result.Success();
            return(result);

            //_logger.Info($"Mining-Confirmed - Parameters - {JsonConvert.SerializeObject(model)}");
            //_logger.Info($"Client IP - {this.GetClientIPAddress()}");

            //try
            //{
            //    if (model.MiningConfirmedList == null || model.MiningConfirmedList.Count <= 0)
            //    {
            //        result.Success();
            //        return result;
            //    }

            //    MiningComponent mc = new MiningComponent();
            //    foreach (var miningConfirmed in model.MiningConfirmedList)
            //    {
            //        try
            //        {
            //            mc.MiningConfirmed(miningConfirmed.AccountType, miningConfirmed.AccountId, miningConfirmed.Amount);
            //        }
            //        catch
            //        {
            //            _logger.Error($"Mining-Confirmed - Single Error - {JsonConvert.SerializeObject(miningConfirmed)}");
            //        }
            //    }

            //    result.Success();
            //    return result;
            //}
            //catch (CommonException ex)
            //{
            //    _logger.Error($"Mining-Confirmed - ErrorMessage - {ex.Message}", ex);
            //    result.Failer(ex.ReasonCode, ex.Message);
            //    return result;
            //}
            //catch (Exception ex)
            //{
            //    _logger.Error($"Mining-Confirmed - ErrorMessage - {ex.Message}", ex);
            //    result.Failer(GENERAL_ERROR, "System error");
            //    return result;
            //}
        }
예제 #3
0
        public void MiningConfirmed(MiningConfirmedModel model)
        {
            var crypto = new CryptocurrencyDAC().GetByCode("FIII");

            lock (obj)
            {
                try
                {
                    if (model.AccountType == (byte)AccountType.User)
                    {
                        AccountMiningConfirmed(crypto.Id, model, new UserWalletFactory(), new UserWalletStatementFactory());
                    }
                    else if (model.AccountType == (byte)AccountType.Merchant)
                    {
                        AccountMiningConfirmed(crypto.Id, model, new MerchantWalletFactory(), new MerchantWalletStatementFactory());
                    }
                }
                catch (Exception ex)
                {
                    _logger.Error($"Mining-Confirmed - ErrorMessage - {ex.Message}", ex);
                }
            }
        }
예제 #4
0
 private void MiningConfirmedFaild(MiningConfirmedModel model, string message)
 {
     _logger.Info($"Mining-Confirmed - ErrorMessage:{message},accountType:{model.AccountType}, accountId:{model.AccountId},amount:{model.Amount}");
 }