use of io.nuls.utxo.accounts.model.UtxoAccountsBalance in project nuls by nuls-io.
the class AccountLedgerServiceImpl method getBalance.
@Override
public Result<Balance> getBalance(byte[] address) {
if (address == null || address.length != Address.ADDRESS_LENGTH) {
return Result.getFailed(AccountErrorCode.ADDRESS_ERROR);
}
Account account = AccountLegerUtils.isLocalAccount(address);
if (null == account) {
return Result.getFailed(AccountErrorCode.ACCOUNT_NOT_EXIST);
}
Balance balance;
if (account.isOk()) {
balance = balanceManager.getBalance(address).getData();
} else {
balance = new Balance();
Result<UtxoAccountsBalance> result = this.utxoAccountsBalanceService.getUtxoAccountsBalance(address);
if (!result.isFailed()) {
UtxoAccountsBalance uab = result.getData();
balance.setBalance(uab.getBalance());
balance.setLocked(uab.getHadLocked());
balance.setUsable(balance.getBalance().subtract(balance.getLocked()));
}
}
if (balance == null) {
return Result.getFailed(AccountErrorCode.ACCOUNT_NOT_EXIST);
}
return Result.getSuccess().setData(balance);
}
use of io.nuls.utxo.accounts.model.UtxoAccountsBalance in project nuls by nuls-io.
the class UtxoAccountsBalanceServiceImpl method getUtxoAccountsBalance.
@Override
public Result<UtxoAccountsBalance> getUtxoAccountsBalance(byte[] owner) {
if (!AddressTool.validAddress(AddressTool.getStringAddressByBytes(owner))) {
return Result.getFailed(AccountErrorCode.ADDRESS_ERROR);
}
try {
Result<UtxoAccountsBalancePo> utxoAccountsBalance = utxoAccountsStorageService.getUtxoAccountsBalanceByAddress(owner);
long synBlockHeight = utxoAccountsStorageService.getHadSynBlockHeight();
if (null == utxoAccountsBalance || null == utxoAccountsBalance.getData()) {
return Result.getFailed(UtxoAccountsErrorCode.DATA_NOT_FOUND);
}
UtxoAccountsBalancePo dbAccountsBalance = utxoAccountsBalance.getData();
UtxoAccountsBalance accountBalance = new UtxoAccountsBalance();
accountBalance.setOwner(dbAccountsBalance.getOwner());
long totalNa = dbAccountsBalance.getOutputBalance() - (dbAccountsBalance.getInputBalance());
totalNa += dbAccountsBalance.getContractToBalance();
totalNa -= dbAccountsBalance.getContractFromBalance();
accountBalance.setBalance(Na.valueOf(totalNa));
long permanentLockedNa = dbAccountsBalance.getLockedPermanentBalance() - (dbAccountsBalance.getUnLockedPermanentBalance());
long lockedNa = permanentLockedNa;
List<LockedBalance> timeLockedBalance = dbAccountsBalance.getLockedTimeList();
long currentTime = TimeService.currentTimeMillis();
for (LockedBalance balance : timeLockedBalance) {
if (balance.getLockedTime() > currentTime) {
lockedNa += balance.getLockedBalance();
} else {
break;
}
}
List<LockedBalance> heightLockedBalance = dbAccountsBalance.getLockedHeightList();
for (LockedBalance balance : heightLockedBalance) {
if (balance.getLockedTime() > synBlockHeight) {
lockedNa += balance.getLockedBalance();
} else {
break;
}
}
accountBalance.setHadLocked(Na.valueOf(lockedNa));
return Result.getSuccess().setData(accountBalance);
} catch (NulsException e) {
Log.error(e);
}
return Result.getFailed(UtxoAccountsErrorCode.SYS_UNKOWN_EXCEPTION);
}
Aggregations