diff --git a/conflux-admin/src/main/java/com/conflux/web/controller/nft/domain/ConfluxExecutor.java b/conflux-admin/src/main/java/com/conflux/web/controller/nft/domain/ConfluxExecutor.java index 8e83c1c..be082e2 100644 --- a/conflux-admin/src/main/java/com/conflux/web/controller/nft/domain/ConfluxExecutor.java +++ b/conflux-admin/src/main/java/com/conflux/web/controller/nft/domain/ConfluxExecutor.java @@ -124,14 +124,12 @@ public class ConfluxExecutor { return cfx.estimateGasAndCollateral(call).sendAndGet(); } - public String safeTransferFrom(Account.Option option, String from, String to, List tokenId) throws Exception { + public String safeTransferFrom(Account.Option option, String from, String to, BigInteger tokenId) throws Exception { return this.account.call(option, new conflux.web3j.types.Address(this.contract), "safeTransferFrom", new Address(from), new Address(to), - new org.web3j.abi.datatypes.DynamicArray<>( - Uint256.class, - org.web3j.abi.Utils.typeMap(tokenId, Uint256.class))); + new org.web3j.abi.datatypes.Uint(tokenId)); } } diff --git a/conflux-admin/src/main/java/com/conflux/web/controller/nft/service/ConfluxService.java b/conflux-admin/src/main/java/com/conflux/web/controller/nft/service/ConfluxService.java index 9f6192c..f985dd3 100644 --- a/conflux-admin/src/main/java/com/conflux/web/controller/nft/service/ConfluxService.java +++ b/conflux-admin/src/main/java/com/conflux/web/controller/nft/service/ConfluxService.java @@ -48,5 +48,5 @@ public interface ConfluxService { * @param checkArgs * @return */ - AjaxResult safeTransferFrom(CheckArgs checkArgs); + AjaxResult safeTransferFrom(CheckArgs checkArgs) throws Exception; } diff --git a/conflux-admin/src/main/java/com/conflux/web/controller/nft/service/impl/ConfluxServiceImpl.java b/conflux-admin/src/main/java/com/conflux/web/controller/nft/service/impl/ConfluxServiceImpl.java index 09211b9..2c53d26 100644 --- a/conflux-admin/src/main/java/com/conflux/web/controller/nft/service/impl/ConfluxServiceImpl.java +++ b/conflux-admin/src/main/java/com/conflux/web/controller/nft/service/impl/ConfluxServiceImpl.java @@ -446,11 +446,30 @@ public class ConfluxServiceImpl implements ConfluxService { } @Override - public AjaxResult safeTransferFrom(CheckArgs checkArgs) { - - - - return null; + public AjaxResult safeTransferFrom(CheckArgs checkArgs) throws Exception { + if (null == checkArgs) { + return AjaxResult.error("参数为空!"); + } + if (StringUtils.isEmpty(checkArgs.getToken()) || StringUtils.isEmpty(checkArgs.getIds()) || + StringUtils.isEmpty(checkArgs.getSign()) || StringUtils.isEmpty(checkArgs.getTimesTamp()) || + StringUtils.isEmpty(checkArgs.getAppId()) || StringUtils.isEmpty(checkArgs.getPrivateKey())) { + return AjaxResult.error("参数缺失!"); + } + CollectConfig collectConfig = collectConfigService.selectCollectConfigByStatus(); + ContractConfig contractConfig = contractConfigService.selectContractConfigByUnitName(checkArgs.getUnitName()); + Cfx cfx = Cfx.create(collectConfig.getNode(), 3, 1000); + Account account = Account.create(cfx, AESUtil.decrypt(contractConfig.getPrivateKey())); + String contract = contractConfig.getContract(); + ConfluxExecutor confluxExecutor = new ConfluxExecutor(account, contract); + Account.Option opt = new Account.Option(); + String id = checkArgs.getIds()[0]; + List list = Arrays.asList(checkArgs.getIds()); + List tokenIds = list.stream().map(n -> new BigInteger(n, 16)).collect(Collectors.toList()); + String s = confluxExecutor.safeTransferFrom(opt, contractConfig.getOwner(), "", tokenIds.get(0)); + if(StringUtils.isNotEmpty(s)){ + return AjaxResult.error("操作失败!"); + } + return AjaxResult.success("操作成功!"); } public boolean executeMakeUp(String contract, String markName) {