Search in sources :

Example 6 with MultipleAddressTransferModel

use of io.nuls.account.ledger.model.MultipleAddressTransferModel in project nuls by nuls-io.

the class AccountLedgerResource method createTransfer.

@POST
@Path("/multiAccount/createMultiTransfer")
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "多签转账", notes = "result.data: resultJson 返回转账结果")
@ApiResponses(value = { @ApiResponse(code = 200, message = "success") })
public RpcClientResult createTransfer(@ApiParam(name = "form", value = "转账", required = true) CreateP2shTransactionForm form) {
    if (NulsContext.MAIN_NET_VERSION <= 1) {
        return Result.getFailed(KernelErrorCode.VERSION_TOO_LOW).toRpcClientResult();
    }
    List<MultipleAddressTransferModel> toModelList = new ArrayList<>();
    if (form == null) {
        return Result.getFailed(AccountErrorCode.ADDRESS_ERROR).toRpcClientResult();
    }
    if (!AddressTool.validAddress(form.getAddress())) {
        return Result.getFailed(AccountErrorCode.ADDRESS_ERROR).toRpcClientResult();
    }
    if (!AddressTool.validAddress(form.getSignAddress())) {
        return Result.getFailed(AccountErrorCode.ADDRESS_ERROR).toRpcClientResult();
    }
    if (form.getOutputs() == null || form.getOutputs().size() == 0) {
        return Result.getFailed(AccountErrorCode.ADDRESS_ERROR).toRpcClientResult();
    }
    for (MultipleTxToDto to : form.getOutputs()) {
        if (Na.valueOf(to.getAmount()).isLessThan(ProtocolConstant.MININUM_TRANSFER_AMOUNT)) {
            return Result.getFailed(TransactionErrorCode.TOO_SMALL_AMOUNT).toRpcClientResult();
        }
        MultipleAddressTransferModel model = new MultipleAddressTransferModel();
        if (!AddressTool.validAddress(to.getToAddress())) {
            return Result.getFailed(AccountErrorCode.ADDRESS_ERROR).toRpcClientResult();
        }
        model.setAddress(AddressTool.getAddress(to.getToAddress()));
        model.setAmount(to.getAmount());
        toModelList.add(model);
    }
    Result result = accountLedgerService.createP2shTransfer(form.getAddress(), form.getSignAddress(), toModelList, form.getPassword(), form.getRemark());
    if (result.isSuccess()) {
        Map<String, String> map = new HashMap<>();
        map.put("txData", (String) result.getData());
        result.setData(map);
    }
    return result.toRpcClientResult();
}
Also used : MultipleAddressTransferModel(io.nuls.account.ledger.model.MultipleAddressTransferModel) ValidateResult(io.nuls.kernel.validate.ValidateResult) CoinDataResult(io.nuls.account.ledger.model.CoinDataResult)

Aggregations

CoinDataResult (io.nuls.account.ledger.model.CoinDataResult)6 MultipleAddressTransferModel (io.nuls.account.ledger.model.MultipleAddressTransferModel)6 ValidateResult (io.nuls.kernel.validate.ValidateResult)5 Account (io.nuls.account.model.Account)4 MultiSigAccount (io.nuls.account.model.MultiSigAccount)4 NulsException (io.nuls.kernel.exception.NulsException)4 TransferTransaction (io.nuls.protocol.model.tx.TransferTransaction)4 IOException (java.io.IOException)4 UnsupportedEncodingException (java.io.UnsupportedEncodingException)4 TransactionDataResult (io.nuls.account.ledger.model.TransactionDataResult)3 ECKey (io.nuls.core.tools.crypto.ECKey)3 NulsRuntimeException (io.nuls.kernel.exception.NulsRuntimeException)2 NulsByteBuffer (io.nuls.kernel.utils.NulsByteBuffer)2 AccountConstant (io.nuls.account.constant.AccountConstant)1 AccountErrorCode (io.nuls.account.constant.AccountErrorCode)1 BalanceManager (io.nuls.account.ledger.base.manager.BalanceManager)1 LocalUtxoService (io.nuls.account.ledger.base.service.LocalUtxoService)1 TransactionInfoService (io.nuls.account.ledger.base.service.TransactionInfoService)1 AccountLegerUtils (io.nuls.account.ledger.base.util.AccountLegerUtils)1 CoinComparator (io.nuls.account.ledger.base.util.CoinComparator)1