From 3ae88e4678df92a68a3e53f0c3b47fad344ed588 Mon Sep 17 00:00:00 2001 From: long <18782126717@163.com> Date: Tue, 26 Jul 2022 17:13:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=84=E7=90=86=E7=A1=AE=E8=AE=A4=E9=93=BE?= =?UTF-8?q?=E4=B8=8A=E6=95=B0=E6=8D=AE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nft/domain/ConfluxExecutor.java | 2 +- .../nft/mapper/NftCollectionMapper.java | 3 + .../nft/service/IHandlerStrategy.java | 4 + .../nft/service/INftCollectionService.java | 2 + .../nft/service/INftInfoV2Handler.java | 5 ++ .../nft/service/impl/ConfluxServiceImpl.java | 84 ++++++++++++------- .../nft/service/impl/HandlerStrategy.java | 35 +++++++- .../impl/NftCollectionServiceImpl.java | 9 ++ .../service/impl/NftInfoV2ImplHandler.java | 5 ++ .../src/main/resources/application-dev.yml | 5 ++ .../src/main/resources/application-druid.yml | 7 +- .../src/main/resources/application-prod.yml | 7 +- .../framework/config/NftRequestPool.java | 17 ++++ .../framework/config/ThreadPoolConfig.java | 11 ++- .../mapper/system/NftCollectionMapper.xml | 14 +++- 15 files changed, 173 insertions(+), 37 deletions(-) create mode 100644 conflux-framework/src/main/java/com/conflux/framework/config/NftRequestPool.java 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 46d0e73..4a60e30 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 @@ -67,7 +67,7 @@ public class ConfluxExecutor { org.web3j.abi.Utils.typeMap(tokenURIs, Utf8String.class))); } - public String awardItemDataStr(Account.Option option, String address, List _tokenIds, String tokenURI) throws Exception { + public synchronized String awardItemDataStr(Account.Option option, String address, List _tokenIds, String tokenURI) throws Exception { return this.account.call(option, new conflux.web3j.types.Address(this.contract), AWARDITEMDATASTR, diff --git a/conflux-admin/src/main/java/com/conflux/web/controller/nft/mapper/NftCollectionMapper.java b/conflux-admin/src/main/java/com/conflux/web/controller/nft/mapper/NftCollectionMapper.java index 46375bc..195431d 100644 --- a/conflux-admin/src/main/java/com/conflux/web/controller/nft/mapper/NftCollectionMapper.java +++ b/conflux-admin/src/main/java/com/conflux/web/controller/nft/mapper/NftCollectionMapper.java @@ -2,6 +2,7 @@ package com.conflux.web.controller.nft.mapper; import com.conflux.web.controller.nft.domain.NftCollection; +import com.conflux.web.controller.nft.domain.dto.NftDTO; import org.apache.ibatis.annotations.Param; import java.math.BigInteger; @@ -72,5 +73,7 @@ public interface NftCollectionMapper int updateByTokenId(@Param("hexTokenId")BigInteger hexTokenId,@Param("time")Date time); + int updateByListTokenId(@Param("list")List list, @Param("time")Date time); + Long selectMaxNftId(@Param("contract")String contract); } diff --git a/conflux-admin/src/main/java/com/conflux/web/controller/nft/service/IHandlerStrategy.java b/conflux-admin/src/main/java/com/conflux/web/controller/nft/service/IHandlerStrategy.java index c70f605..e4d052c 100644 --- a/conflux-admin/src/main/java/com/conflux/web/controller/nft/service/IHandlerStrategy.java +++ b/conflux-admin/src/main/java/com/conflux/web/controller/nft/service/IHandlerStrategy.java @@ -3,6 +3,10 @@ package com.conflux.web.controller.nft.service; import conflux.web3j.Cfx; +import java.util.Map; + public interface IHandlerStrategy { boolean relayHandler(Cfx cfx, String json, int type,String contract); + + boolean relayHandler(Map map); } diff --git a/conflux-admin/src/main/java/com/conflux/web/controller/nft/service/INftCollectionService.java b/conflux-admin/src/main/java/com/conflux/web/controller/nft/service/INftCollectionService.java index b935524..3d3e4f9 100644 --- a/conflux-admin/src/main/java/com/conflux/web/controller/nft/service/INftCollectionService.java +++ b/conflux-admin/src/main/java/com/conflux/web/controller/nft/service/INftCollectionService.java @@ -84,5 +84,7 @@ public interface INftCollectionService void updateCollect(NftDTO nftDTO,String contract); + void updateCollect(List nftDTO,String contract); + Long queryTotalNum(String contract); } diff --git a/conflux-admin/src/main/java/com/conflux/web/controller/nft/service/INftInfoV2Handler.java b/conflux-admin/src/main/java/com/conflux/web/controller/nft/service/INftInfoV2Handler.java index 036c1bc..c5d601d 100644 --- a/conflux-admin/src/main/java/com/conflux/web/controller/nft/service/INftInfoV2Handler.java +++ b/conflux-admin/src/main/java/com/conflux/web/controller/nft/service/INftInfoV2Handler.java @@ -1,9 +1,14 @@ package com.conflux.web.controller.nft.service; +import com.conflux.web.controller.nft.domain.dto.NftDTO; import conflux.web3j.Cfx; +import java.util.List; + public interface INftInfoV2Handler { void send721NftTransfer(Cfx cfx, String json,String contract); + + void send721NftTransfer(List nftDataList ,String contract); } 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 ce52f9b..9a04a0b 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 @@ -81,6 +81,10 @@ public class ConfluxServiceImpl implements ConfluxService { @Autowired @Qualifier("asyncExecutorNftPush") private Executor asyncExecutorNftPush; + + @Autowired + @Qualifier("asyncExecutorNftRqurest") + private Executor asyncExecutorNftRqurest; @Autowired private IPrivateKeyService privateKeyService; @Autowired @@ -300,7 +304,7 @@ public class ConfluxServiceImpl implements ConfluxService { } @SneakyThrows - public AjaxResult push(CheckArgs checkArgs) { + public AjaxResult push(CheckArgs checkArgs) { //判断参数 if (null == checkArgs) { return AjaxResult.error("参数为空!"); @@ -374,14 +378,14 @@ public class ConfluxServiceImpl implements ConfluxService { opt.withGasPrice(contractConfig.getGasPrice()); //获取账户余额 BigInteger balance = cfx.getBalance(account.getAddress()).sendAndGet(); - Account sponsorWhitelistControlAccount=Account.create(cfx,AESUtil.decrypt(contractConfig.getPrivateKey())); - SponsorWhitelistControl sponsorWhitelistControl=new SponsorWhitelistControl(sponsorWhitelistControlAccount); + Account sponsorWhitelistControlAccount = Account.create(cfx, AESUtil.decrypt(contractConfig.getPrivateKey())); + SponsorWhitelistControl sponsorWhitelistControl = new SponsorWhitelistControl(sponsorWhitelistControlAccount); Address address = new Address(contractConfig.getContract()); //获取代付账户余额 BigInteger sponsoredBalanceForCollateral = sponsorWhitelistControl.getSponsoredBalanceForCollateral(address.getABIAddress()); //剩余燃气值 BigInteger sponsoredBalanceForGas = sponsorWhitelistControl.getSponsoredBalanceForGas(address.getABIAddress()); - log.info("[--------------------->mintNft][balance]{}[sponsoredBalanceForCollateral:]{}[sponsoredBalanceForGas:]{}", balance,sponsoredBalanceForCollateral,sponsoredBalanceForGas); + log.info("[--------------------->mintNft][balance]{}[sponsoredBalanceForCollateral:]{}[sponsoredBalanceForGas:]{}", balance, sponsoredBalanceForCollateral, sponsoredBalanceForGas); if (balance.compareTo(new BigInteger("40000000000000000000")) < 0) { log.info("[--------------------->mintNft][balance not enough 50]{}", balance); //sms notice @@ -404,7 +408,7 @@ public class ConfluxServiceImpl implements ConfluxService { est = confluxExecutor.getEstimate(cfx, new Address(owner), new Address(contract), AddressUtil.getHexAddress(owner), tokenIds); //判断所需要的费用 - if (sponsoredBalanceForCollateral.compareTo(est.getGasUsed())<0){ + if (sponsoredBalanceForCollateral.compareTo(est.getGasUsed()) < 0) { return AjaxResult.error("代付余额不足"); } log.info("[--------------------->mintNft][GasUsed]{}", est.getGasUsed()); @@ -423,11 +427,11 @@ public class ConfluxServiceImpl implements ConfluxService { est = confluxExecutor.getEstimateDataStr(cfx, new Address(owner), new Address(contract), AddressUtil.getHexAddress(owner), tokenIds, tokenURIs); //判断所需要的费用 - if (sponsoredBalanceForCollateral.compareTo(est.getGasUsed())<0){ + if (sponsoredBalanceForCollateral.compareTo(est.getGasUsed()) < 0) { return AjaxResult.error("代付余额不足"); } - log.info("[--------------------->mintNft][GasUsed]{}", est.getGasUsed()); - log.info("[--------------------->mintNft][StorageCollateralized]{}", est.getStorageCollateralized()); + log.info("[--------------------->awardItemDataStr][GasUsed]{}", est.getGasUsed()); + log.info("[--------------------->awardItemDataStr][StorageCollateralized]{}", est.getStorageCollateralized()); opt.withGasLimit(est.getGasUsed()); opt.withStorageLimit(est.getStorageCollateralized()); hash = confluxExecutor.awardItemDataStr(opt, @@ -443,7 +447,7 @@ public class ConfluxServiceImpl implements ConfluxService { est = confluxExecutor.getEstimateData(cfx, new Address(owner), new Address(contract), AddressUtil.getHexAddress(owner), tokenIds, tokenURIs); //判断所需要的费用 - if (sponsoredBalanceForCollateral.compareTo(est.getGasUsed())<0){ + if (sponsoredBalanceForCollateral.compareTo(est.getGasUsed()) < 0) { return AjaxResult.error("代付余额不足"); } log.info("[--------------------->mintNft][GasUsed]{}", est.getGasUsed()); @@ -465,7 +469,7 @@ public class ConfluxServiceImpl implements ConfluxService { est = confluxExecutor.getEstimateTransferFrom(cfx, new Address(owner), new Address(contract), AddressUtil.getHexAddress(owner), AddressUtil.getHexAddress(checkArgs.getToUser()), nftCollection.getNftId()); //判断所需要的费用 - if (sponsoredBalanceForCollateral.compareTo(est.getGasUsed())<0){ + if (sponsoredBalanceForCollateral.compareTo(est.getGasUsed()) < 0) { return AjaxResult.error("代付余额不足"); } log.info("[--------------------->mintNft][GasUsed]{}", est.getGasUsed()); @@ -527,7 +531,7 @@ public class ConfluxServiceImpl implements ConfluxService { * @param contract * @param unitName */ - public void doPushData(String contract, String unitName) { + public void doPushData(String contract, String unitName) { boolean isFalg = true; CollectConfig collect = (CollectConfig) redisUtils.get(contract); if (null == collect) { @@ -540,7 +544,7 @@ public class ConfluxServiceImpl implements ConfluxService { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); - log.info("[dispatchHandlerEorre]{}",e); + log.info("[dispatchHandlerEorre]{}", e); } } //=======检查数据======= @@ -561,7 +565,7 @@ public class ConfluxServiceImpl implements ConfluxService { cfx = Cfx.create(collect.getNode(), 3, 1000); } catch (Exception e) { e.printStackTrace(); - log.info("[Create Cfx Exception}] {}",e); + log.info("[Create Cfx Exception}] {}", e); } while (isFalg) { try { @@ -569,7 +573,7 @@ public class ConfluxServiceImpl implements ConfluxService { } catch (InterruptedException e) { e.printStackTrace(); } - if (executeMakeUp(collect, contract,eventParams,gson,cfx)) { + if (executeMakeUp(collect, contract, eventParams, gson, cfx)) { isFalg = false; } } @@ -582,7 +586,7 @@ public class ConfluxServiceImpl implements ConfluxService { * @param eventParams * @return */ - public boolean executeMakeUp(CollectConfig collect, String contract, List eventParams,Gson gson,Cfx cfx) { + public synchronized boolean executeMakeUp(CollectConfig collect, String contract, List eventParams, Gson gson, Cfx cfx) { // log.info("[dispatchHandler]{}", "开始监听数据"); if (CollectionUtils.isEmpty(eventParams)) { @@ -591,14 +595,14 @@ public class ConfluxServiceImpl implements ConfluxService { } FilterMapVO vo = getFilter(eventParams); //获取数据高度 - String keyNumber =nftConfig.getEnvironment()+ contract + "number"; + String keyNumber = nftConfig.getEnvironment() + contract + "number"; long from = 0L; if (null == redisUtils.get(keyNumber)) { from = collect.getEpochNumber(); - redisUtils.set(keyNumber,from); - }else { + redisUtils.set(keyNumber, from); + } else { Object number = redisUtils.get(keyNumber); - from= Long.valueOf(String.valueOf(number)); + from = Long.valueOf(String.valueOf(number)); } // Invoke cfx method BigInteger epoch = cfx.getEpochNumber().sendAndGet(); @@ -626,10 +630,14 @@ public class ConfluxServiceImpl implements ConfluxService { //log.info("[executeMakeUp][此区间暂无日志]:from:{} to:{}", from, to); isSuccess = true; } + if (logList.size() > 0) { - log.info("需要确认上链的数据:{}", logList.toArray()); + Map map = new HashMap<>(); + List list = new ArrayList<>(); + List intList = new ArrayList<>(); + String typeEvAddress=null; for (Log l : logList) { - log.info("需要确认上链的gson数据:{}", gson.toJson(l)); +// log.info("需要确认上链的gson数据:{}", gson.toJson(l)); //处理高度信息 String evAddress = l.getTopics().get(0); String tokenAddress = l.getAddress().getAddress(); @@ -642,23 +650,41 @@ public class ConfluxServiceImpl implements ConfluxService { log.info("[dispatchHandler][暂无符合条件的数据]"); return false; } - boolean res; + if (type == 20000) { + typeEvAddress=evAddress; + } + //boolean res; try { - res = iHandlerStrategy.relayHandler(cfx, gson.toJson(l), type, contract); + list.add(gson.toJson(l)); + intList.add(type); + //res = iHandlerStrategy.relayHandler(cfx, gson.toJson(l), type, contract); } catch (Exception e) { e.printStackTrace(); isSuccess = false; log.info("[dispatchHandler][数据错误未分配]{}", l.getData()); break; } +// if (res) { +// log.info("[dispatchHandler][分配成功]{}", evAddress); +// isSuccess = true; +// } else { +// log.info("[dispatchHandler][数据错误未分配]{}", l.getData()); +// isSuccess = false; +// break; +// } + } + try { + // map.put("cfx",cfx); + map.put("list", list); + map.put("type", intList); + map.put("contract", contract); + boolean res = iHandlerStrategy.relayHandler(map); if (res) { - log.info("[dispatchHandler][分配成功]{}", evAddress); + log.info("[dispatchHandler][分配成功]{}", typeEvAddress); isSuccess = true; - } else { - log.info("[dispatchHandler][数据错误未分配]{}", l.getData()); - isSuccess = false; - break; } + } catch (Exception e) { + log.error("更新确认链上数据失败:", e); } } //分析数据拉取成功 @@ -719,7 +745,7 @@ public class ConfluxServiceImpl implements ConfluxService { */ private synchronized List autoincrement(String contract, List list) { long totalNum = 0L; - String key=nftConfig.getEnvironment()+contract+"autoinc"; + String key = nftConfig.getEnvironment() + contract + "autoinc"; if (null == redisUtils.get(key)) { totalNum = nftCollectionService.queryTotalNum(contract); } else { diff --git a/conflux-admin/src/main/java/com/conflux/web/controller/nft/service/impl/HandlerStrategy.java b/conflux-admin/src/main/java/com/conflux/web/controller/nft/service/impl/HandlerStrategy.java index b0564c9..f4b4471 100644 --- a/conflux-admin/src/main/java/com/conflux/web/controller/nft/service/impl/HandlerStrategy.java +++ b/conflux-admin/src/main/java/com/conflux/web/controller/nft/service/impl/HandlerStrategy.java @@ -1,16 +1,25 @@ package com.conflux.web.controller.nft.service.impl; +import cn.hutool.core.date.DateUtil; +import com.conflux.web.controller.nft.domain.NftData; +import com.conflux.web.controller.nft.domain.dto.NftDTO; import com.conflux.web.controller.nft.service.IHandlerStrategy; import com.conflux.web.controller.nft.service.INftInfoV2Handler; +import com.conflux.web.controller.util.CfxUtils; import conflux.web3j.Cfx; +import conflux.web3j.response.Log; +import jnr.ffi.annotations.In; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; @Slf4j @Service -public class HandlerStrategy implements IHandlerStrategy { +public class HandlerStrategy extends BaseHandler implements IHandlerStrategy { @Resource private INftInfoV2Handler iNftInfoV2ImplHandler; @@ -25,4 +34,28 @@ public class HandlerStrategy implements IHandlerStrategy { } return false; } + + @Override + public boolean relayHandler(Map map) { + //Cfx cfx=(Cfx) map.get("cfx"); + List list=(List) map.get("list"); + List typeList=(List) map.get("type"); + List nftDataList=new ArrayList<>(); + String contract =(String) map.get("contract"); + if (list.size()==typeList.size()){ + for (int i = 0; i nftDTO, String contract) { + int i = nftCollectionMapper.updateByListTokenId(nftDTO, new Date()); + if (i<0){ + log.info("确认上链失败"); + log.info("[updateByListTokenId]{}",Arrays.toString(nftDTO.toArray())); + } + } + @Override public Long queryTotalNum(String contract) { return nftCollectionMapper.selectMaxNftId(contract ); diff --git a/conflux-admin/src/main/java/com/conflux/web/controller/nft/service/impl/NftInfoV2ImplHandler.java b/conflux-admin/src/main/java/com/conflux/web/controller/nft/service/impl/NftInfoV2ImplHandler.java index d7d7a57..55ef247 100644 --- a/conflux-admin/src/main/java/com/conflux/web/controller/nft/service/impl/NftInfoV2ImplHandler.java +++ b/conflux-admin/src/main/java/com/conflux/web/controller/nft/service/impl/NftInfoV2ImplHandler.java @@ -43,6 +43,11 @@ public class NftInfoV2ImplHandler extends BaseHandler implements INftInfoV2Handl nftCollectionService.updateCollect(nftDTO,contract); } + @Override + public void send721NftTransfer(List nftDataList, String contract) { + nftCollectionService.updateCollect(nftDataList,contract); + } + public static Address decode(String encodedResult) { TypeReference returnTypeRef = TypeReference.create(Address.class); List
decoded = FunctionReturnDecoder.decode(encodedResult, Arrays.asList(returnTypeRef)); diff --git a/conflux-admin/src/main/resources/application-dev.yml b/conflux-admin/src/main/resources/application-dev.yml index 8acebf0..396d7f4 100644 --- a/conflux-admin/src/main/resources/application-dev.yml +++ b/conflux-admin/src/main/resources/application-dev.yml @@ -105,4 +105,9 @@ async-pool: maxPoolSize: 8 keepAliveSeconds: 120 queueCapacity: 1000 + nft-request: + corePoolSize: 1 + maxPoolSize: 1 + keepAliveSeconds: 120 + queueCapacity: 300 diff --git a/conflux-admin/src/main/resources/application-druid.yml b/conflux-admin/src/main/resources/application-druid.yml index ae19405..eb90836 100644 --- a/conflux-admin/src/main/resources/application-druid.yml +++ b/conflux-admin/src/main/resources/application-druid.yml @@ -104,4 +104,9 @@ async-pool: corePoolSize: 4 maxPoolSize: 8 keepAliveSeconds: 120 - queueCapacity: 1000 \ No newline at end of file + queueCapacity: 1000 + nft-request: + corePoolSize: 1 + maxPoolSize: 1 + keepAliveSeconds: 120 + queueCapacity: 300 \ No newline at end of file diff --git a/conflux-admin/src/main/resources/application-prod.yml b/conflux-admin/src/main/resources/application-prod.yml index 6e99cca..26cadb8 100644 --- a/conflux-admin/src/main/resources/application-prod.yml +++ b/conflux-admin/src/main/resources/application-prod.yml @@ -103,4 +103,9 @@ async-pool: corePoolSize: 4 maxPoolSize: 8 keepAliveSeconds: 120 - queueCapacity: 1000 \ No newline at end of file + queueCapacity: 1000 + nft-request: + corePoolSize: 1 + maxPoolSize: 1 + keepAliveSeconds: 120 + queueCapacity: 300 \ No newline at end of file diff --git a/conflux-framework/src/main/java/com/conflux/framework/config/NftRequestPool.java b/conflux-framework/src/main/java/com/conflux/framework/config/NftRequestPool.java new file mode 100644 index 0000000..2456d22 --- /dev/null +++ b/conflux-framework/src/main/java/com/conflux/framework/config/NftRequestPool.java @@ -0,0 +1,17 @@ +package com.conflux.framework.config; + +import com.conflux.framework.config.properties.AbstractExecutorPool; +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @Author _007long + * @Date 2022 07 26 + **/ +@Component +@ConfigurationProperties(prefix = "async-pool.nft-request") +@Data +public class NftRequestPool extends AbstractExecutorPool { + private String threadNamePrefix = "handler nft request data executor-"; +} diff --git a/conflux-framework/src/main/java/com/conflux/framework/config/ThreadPoolConfig.java b/conflux-framework/src/main/java/com/conflux/framework/config/ThreadPoolConfig.java index f8f223b..4f9ee83 100644 --- a/conflux-framework/src/main/java/com/conflux/framework/config/ThreadPoolConfig.java +++ b/conflux-framework/src/main/java/com/conflux/framework/config/ThreadPoolConfig.java @@ -26,10 +26,13 @@ public class ThreadPoolConfig private final NftSaveDataPool nftSaveDataPool; + private final NftRequestPool nftRequestPool; + @Autowired - public ThreadPoolConfig(NftPushPool nftPushPool,NftSaveDataPool nftSaveDataPool){ + public ThreadPoolConfig(NftPushPool nftPushPool, NftSaveDataPool nftSaveDataPool, NftRequestPool nftRequestPool){ this.nftPushPool=nftPushPool; this.nftSaveDataPool=nftSaveDataPool; + this.nftRequestPool = nftRequestPool; } // @Bean(name = "threadPoolTaskExecutor") // public ThreadPoolTaskExecutor threadPoolTaskExecutor() @@ -63,7 +66,11 @@ public class ThreadPoolConfig return initExcutor(nftPushPool, nftPushPool.getThreadNamePrefix(), callerRunsPolicy); } - + @Bean(name = "asyncExecutorNftRqurest") + public Executor asyncExecutorNftRqurest() { + ThreadPoolExecutor.CallerRunsPolicy callerRunsPolicy = new ThreadPoolExecutor.CallerRunsPolicy(); + return initExcutor(nftRequestPool, nftRequestPool.getThreadNamePrefix(), callerRunsPolicy); + } private Executor initExcutor(AbstractExecutorPool abstractExecutorPool, String threadName, RejectedExecutionHandler rejectedExecutionHandler){ ThreadPoolTaskExecutor threadPool = new ThreadPoolTaskExecutor(); threadPool.setCorePoolSize(abstractExecutorPool.getCorePoolSize()); diff --git a/conflux-system/src/main/resources/mapper/system/NftCollectionMapper.xml b/conflux-system/src/main/resources/mapper/system/NftCollectionMapper.xml index ae7d267..645eb94 100644 --- a/conflux-system/src/main/resources/mapper/system/NftCollectionMapper.xml +++ b/conflux-system/src/main/resources/mapper/system/NftCollectionMapper.xml @@ -97,10 +97,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" insert into nft_collection - (unit_name, information_table_id,nft_id,nft_uri,contract,on_chain_status,created_time) + (unit_name, information_table_id,nft_id,nft_uri,contract,hash_code,gas_used,on_chain_status,created_time) VALUES - (#{item.unitName}, #{item.informationTableId},#{item.nftId},#{item.nftUri},#{item.contract},1,#{time}) + (#{item.unitName}, #{item.informationTableId},#{item.nftId},#{item.nftUri},#{item.contract},#{item.hashCode},#{item.gasUsed},1,#{time}) @@ -130,6 +130,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" updated_time = #{time} where nft_id = #{hexTokenId} and on_chain_status = 1 + + update nft_collection + set + on_chain_status = 2, + updated_time = #{time} + where nft_id in + + #{item.tokenId} + + delete from nft_collection where id = #{id}