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);
}
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);
}
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);
}
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);
}
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);
}
Aggregations