public UserExTransferOrder Create(UserExTransferOrder order) { const string sql = @"INSERT INTO [dbo].[UserExTransferOrders]([Timestamp],[OrderNo],[OrderType],[AccountId],[WalletId],[CryptoId],[CryptoCode],[Amount],[Status],[Remark],[ExId]) VALUES (@Timestamp,@OrderNo,@OrderType,@AccountId,@WalletId,@CryptoId,@CryptoCode,@Amount,@Status,@Remark,@ExId);SELECT SCOPE_IDENTITY()"; using (var con = WriteConnection()) { order.Id = con.ExecuteScalar <long>(sql, order); return(order); } }
public string FiiiPayTransferInto(UserAccount account, Cryptocurrency coin, decimal amount) { var walletDac = new UserWalletDAC(); var wallet = walletDac.GetByAccountId(account.Id, coin.Id); UserExTransferOrder order; using (var scope = new TransactionScope()) { if (wallet == null) { wallet = new UserWalletComponent().GenerateWallet(account.Id, coin.Id); } walletDac.Increase(wallet.Id, amount); order = new UserExTransferOrder { Timestamp = DateTime.UtcNow, OrderNo = CreateOrderNo(), OrderType = ExTransferType.FromEx, AccountId = account.Id, WalletId = wallet.Id, CryptoId = coin.Id, CryptoCode = coin.Code, Amount = amount, Status = 1, Remark = null, ExId = null }; new UserExTransferOrderDAC().Create(order); scope.Complete(); } try { FiiiEXTransferMSMQ.PubUserTransferFromEx(order.Id, 0); } catch (Exception ex) { LogHelper.Info("PubUserTransferFromEx - error", ex); } return(order.OrderNo); }
public TransferResult FiiiPayTransferToEx(UserAccount account, int cryptoId, decimal amount, string pin) { new SecurityComponent().VerifyPin(account, pin); var openAccountDac = new OpenAccountDAC(); var openAccount = openAccountDac.GetOpenAccount(FiiiType.FiiiPay, account.Id); if (openAccount == null) { throw new CommonException(ReasonCode.GENERAL_ERROR, R.FiiiExAccountNotExist); } var crypto = new CryptocurrencyDAC().GetById(cryptoId); if (crypto == null) { throw new CommonException(ReasonCode.GENERAL_ERROR, R.CurrencyForbidden); } var walletDac = new UserWalletDAC(); var wallet = walletDac.GetByAccountId(account.Id, crypto.Id); if (wallet.Balance < amount) { throw new CommonException(ReasonCode.GENERAL_ERROR, Resources.余额不足); } //10091=参数不符合要求 10013=用户信息不存在 10020=币不存在 0=成功 int result = FiiiExCoinIn(openAccount.OpenId, crypto.Code, amount, out string recordId); if (result != 0) { throw new CommonException(ReasonCode.GENERAL_ERROR, Resources.划转到FiiiEx失败); } UserExTransferOrder order; using (var scope = new TransactionScope()) { walletDac.Decrease(wallet.Id, amount); order = new UserExTransferOrder { Timestamp = DateTime.UtcNow, OrderNo = CreateOrderNo(), OrderType = ExTransferType.ToEx, AccountId = account.Id, WalletId = wallet.Id, CryptoId = crypto.Id, CryptoCode = crypto.Code, Amount = amount, Status = 1, Remark = null, ExId = recordId }; order = new UserExTransferOrderDAC().Create(order); scope.Complete(); } try { FiiiEXTransferMSMQ.PubUserTransferToEx(order.Id, 0); } catch (Exception ex) { LogHelper.Info("PubUserTransferToEx - error", ex); } return(new TransferResult { Id = order.Id, Amount = order.Amount.ToString(crypto.DecimalPlace), OrderNo = order.OrderNo, Timestamp = order.Timestamp.ToUnixTime(), CryptoCode = crypto.Code }); }