Search in sources :

Example 6 with AccountPo

use of io.nuls.account.storage.po.AccountPo in project nuls by nuls-io.

the class AccountServiceImpl method getBalance.

@Override
public Result<Balance> getBalance() throws NulsException {
    List<Account> list = new ArrayList<>();
    Balance balance = new Balance();
    Result<List<AccountPo>> result = accountStorageService.getAccountList();
    if (result.isFailed()) {
        return Result.getFailed().setData(balance);
    }
    List<AccountPo> poList = result.getData();
    if (null == poList || poList.isEmpty()) {
        return Result.getFailed(AccountErrorCode.ACCOUNT_NOT_EXIST);
    }
    for (AccountPo po : poList) {
        Account account = po.toAccount();
        list.add(account);
    }
    for (Account account : list) {
        Result<Balance> resultBalance = accountLedgerService.getBalance(account.getAddress().getAddressBytes());
        if (resultBalance.isSuccess()) {
            Balance temp = resultBalance.getData();
            if (null == temp) {
                continue;
            }
            balance.setBalance(balance.getBalance().add(temp.getBalance()));
            balance.setLocked(balance.getLocked().add(temp.getLocked()));
            balance.setUsable(balance.getUsable().add(temp.getUsable()));
        }
    }
    return Result.getSuccess().setData(balance);
}
Also used : AccountPo(io.nuls.account.storage.po.AccountPo)

Example 7 with AccountPo

use of io.nuls.account.storage.po.AccountPo in project nuls by nuls-io.

the class AliasService method saveAlias.

/**
 * 保存别名(全网)
 * 1.保存别名alias至数据库
 * 2.从数据库取出对应的account账户,将别名设置进account然后保存至数据库
 * 3.将修改后的account重新进行缓存
 * saveAlias
 * 1. Save the alias to the database.
 * 2. Take the corresponding account from the database, set the alias to account and save it to the database.
 * 3. Re-cache the modified account.
 */
public Result saveAlias(AliasPo aliaspo) throws NulsException {
    try {
        Result result = aliasStorageService.saveAlias(aliaspo);
        if (result.isFailed()) {
            this.rollbackAlias(aliaspo);
        }
        AccountPo po = accountStorageService.getAccount(aliaspo.getAddress()).getData();
        if (null != po) {
            po.setAlias(aliaspo.getAlias());
            Result resultAcc = accountStorageService.updateAccount(po);
            if (resultAcc.isFailed()) {
                this.rollbackAlias(aliaspo);
            }
            Account account = po.toAccount();
            accountCacheService.localAccountMaps.put(account.getAddress().getBase58(), account);
        }
    } catch (Exception e) {
        this.rollbackAlias(aliaspo);
        Log.error(e);
        return Result.getFailed(AccountErrorCode.FAILED);
    }
    return Result.getSuccess().setData(true);
}
Also used : Account(io.nuls.account.model.Account) MultiSigAccount(io.nuls.account.model.MultiSigAccount) AccountPo(io.nuls.account.storage.po.AccountPo) IOException(java.io.IOException) NulsException(io.nuls.kernel.exception.NulsException) CoinDataResult(io.nuls.account.ledger.model.CoinDataResult)

Example 8 with AccountPo

use of io.nuls.account.storage.po.AccountPo in project nuls by nuls-io.

the class AliasService method rollbackAlias.

/**
 * 回滚别名操作(删除别名(全网))
 * 1.从数据库删除别名对象数据
 * 2.取出对应的account将别名清除,重新存入数据库
 * 3.重新缓存account
 * rollbackAlias
 * 1.Delete the alias data from the database.
 * 2. Remove the corresponding account to clear the alias and restore it in the database.
 * 3. Recache the account.
 */
public Result rollbackAlias(AliasPo aliasPo) throws NulsException {
    try {
        AliasPo po = aliasStorageService.getAlias(aliasPo.getAlias()).getData();
        if (po != null && Arrays.equals(po.getAddress(), aliasPo.getAddress())) {
            aliasStorageService.removeAlias(aliasPo.getAlias());
            Result<AccountPo> rs = accountStorageService.getAccount(aliasPo.getAddress());
            if (rs.isSuccess()) {
                AccountPo accountPo = rs.getData();
                accountPo.setAlias("");
                Result result = accountStorageService.updateAccount(accountPo);
                if (result.isFailed()) {
                    return Result.getFailed(AccountErrorCode.FAILED);
                }
                Account account = accountPo.toAccount();
                accountCacheService.localAccountMaps.put(account.getAddress().getBase58(), account);
            }
        }
    } catch (Exception e) {
        Log.error(e);
        throw new NulsException(AccountErrorCode.ALIAS_ROLLBACK_ERROR);
    }
    return Result.getSuccess().setData(true);
}
Also used : Account(io.nuls.account.model.Account) MultiSigAccount(io.nuls.account.model.MultiSigAccount) NulsException(io.nuls.kernel.exception.NulsException) AccountPo(io.nuls.account.storage.po.AccountPo) AliasPo(io.nuls.account.storage.po.AliasPo) IOException(java.io.IOException) NulsException(io.nuls.kernel.exception.NulsException) CoinDataResult(io.nuls.account.ledger.model.CoinDataResult)

Example 9 with AccountPo

use of io.nuls.account.storage.po.AccountPo in project nuls by nuls-io.

the class AccountServiceImpl method getAccountList.

@Override
public Result<Collection<Account>> getAccountList() {
    List<Account> list = new ArrayList<>();
    if (accountCacheService.localAccountMaps != null) {
        Collection<Account> values = accountCacheService.localAccountMaps.values();
        Iterator<Account> iterator = values.iterator();
        while (iterator.hasNext()) {
            list.add(iterator.next());
        }
    } else {
        accountCacheService.localAccountMaps = new ConcurrentHashMap<>();
        Result<List<AccountPo>> result = accountStorageService.getAccountList();
        if (result.isFailed()) {
            return Result.getFailed().setData(list);
        }
        List<AccountPo> poList = result.getData();
        Set<String> addressList = new HashSet<>();
        if (null == poList || poList.isEmpty()) {
            return Result.getSuccess().setData(list);
        }
        for (AccountPo po : poList) {
            Account account = po.toAccount();
            list.add(account);
            addressList.add(account.getAddress().getBase58());
        }
        for (Account account : list) {
            accountCacheService.localAccountMaps.put(account.getAddress().getBase58(), account);
        }
    }
    list.sort(new Comparator<Account>() {

        @Override
        public int compare(Account o1, Account o2) {
            return (o2.getCreateTime().compareTo(o1.getCreateTime()));
        }
    });
    return Result.getSuccess().setData(list);
}
Also used : AccountPo(io.nuls.account.storage.po.AccountPo)

Example 10 with AccountPo

use of io.nuls.account.storage.po.AccountPo in project nuls by nuls-io.

the class AccountBaseService method setRemark.

public Result setRemark(String address, String remark) {
    if (!AddressTool.validAddress(address)) {
        return Result.getFailed(AccountErrorCode.ADDRESS_ERROR);
    }
    Account account = accountService.getAccount(address).getData();
    if (null == account) {
        return Result.getFailed(AccountErrorCode.ACCOUNT_NOT_EXIST);
    }
    if (StringUtils.isBlank(remark)) {
        remark = null;
    }
    if (!StringUtils.validRemark(remark)) {
        return Result.getFailed(AccountErrorCode.NICKNAME_TOO_LONG);
    }
    account.setRemark(remark);
    Result result = accountStorageService.updateAccount(new AccountPo(account));
    if (result.isFailed()) {
        return Result.getFailed(AccountErrorCode.FAILED);
    }
    accountCacheService.localAccountMaps.put(account.getAddress().getBase58(), account);
    return Result.getSuccess().setData(true);
}
Also used : Account(io.nuls.account.model.Account) AccountPo(io.nuls.account.storage.po.AccountPo) Result(io.nuls.kernel.model.Result)

Aggregations

AccountPo (io.nuls.account.storage.po.AccountPo)12 NulsException (io.nuls.kernel.exception.NulsException)8 Result (io.nuls.kernel.model.Result)7 Account (io.nuls.account.model.Account)5 AliasPo (io.nuls.account.storage.po.AliasPo)4 IOException (java.io.IOException)3 CoinDataResult (io.nuls.account.ledger.model.CoinDataResult)2 MultiSigAccount (io.nuls.account.model.MultiSigAccount)2 CryptoException (io.nuls.core.tools.crypto.Exception.CryptoException)2 NulsRuntimeException (io.nuls.kernel.exception.NulsRuntimeException)1 Address (io.nuls.kernel.model.Address)1 SignatureException (java.security.SignatureException)1