Commit b12482f9 authored by wp's avatar wp

外部token发布商品

parent 1deaa151
...@@ -106,8 +106,9 @@ public class NftEvm { ...@@ -106,8 +106,9 @@ public class NftEvm {
// System.err.println(hash); // System.err.println(hash);
//发行NFT,本次发行的是ERC1155 //发行NFT,本次发行的是ERC1155
// String hash = ra.evmPublishToken(abi, cAddr, EvmTokenEnum.ERC1155, 0L, "1KzrvBBeVUavMjqnTVzzCygUVmPNk9vkra", null, 1631716701489L, 10000L, "publish", false); String hash = ra.evmPublishToken(abi, cAddr, EvmTokenEnum.ERC1155, 0L, "1F5HWw8WB7iGat37RXqbfaQAcHUwpGedko","1F5HWw8WB7iGat37RXqbfaQAcHUwpGedko", null, 1631716701489L, 10000L, "publish", true);
// System.err.println(hash); System.err.println(hash);
System.err.println(ra.cycleConfirmTxWithHash(hash,true,1000).getStatus());
//NFT转账 //NFT转账
// String hash = ra.evmTransfer(abi, cAddr, EvmTokenEnum.ERC1155, 0L, to, tokenId, 100L, "transfer", publisher, null, false); // String hash = ra.evmTransfer(abi, cAddr, EvmTokenEnum.ERC1155, 0L, to, tokenId, 100L, "transfer", publisher, null, false);
...@@ -119,7 +120,9 @@ public class NftEvm { ...@@ -119,7 +120,9 @@ public class NftEvm {
System.err.println("TRUE"); System.err.println("TRUE");
}*/ }*/
String hash = ra.evmDeploy(code, abi, "MallNFT", RpcConfig.TX_EVM_DEPLOY_FEE, "MallNFT", null, tokenManager, tokenManagerKey, false); // String hash = ra.evmDeploy(code, abi, "MallNFT", RpcConfig.TX_EVM_DEPLOY_FEE, "MallNFT", null, tokenManager, tokenManagerKey, false);
// System.err.println(ra.walletCreateAccount("rressfe"));
} }
} }
...@@ -129,6 +129,20 @@ public class ChainUtil { ...@@ -129,6 +129,20 @@ public class ChainUtil {
return hash; return hash;
} }
//发行NFT,本次发行的是ERC1155 发行确认分体
public String evmPublishTokenSplitBatch(String publisher, long[] tokenIds, long[] amounts) {
String hash = null;
switch (Objects.requireNonNull(ChainTypeEnum.getByType(type))) {
case MAIN:
hash = mainClient.evmPublishTokenBatch(abi, cAddr, 0L, publisher, publisher, null, tokenIds, amounts, "publish", false);
break;
case PARA:
hash = paraClient.evmPublishTokenBatch(abi, cAddr, 0L, publisher, publisher, null, tokenIds, amounts, "publish", true);
break;
}
return hash;
}
//NFT转账 //NFT转账
public String evmTransfer(String to, String publisher, long tokenId, long amount) { public String evmTransfer(String to, String publisher, long tokenId, long amount) {
String hash = null; String hash = null;
...@@ -145,6 +159,22 @@ public class ChainUtil { ...@@ -145,6 +159,22 @@ public class ChainUtil {
return hash; return hash;
} }
//NFT转账批量
public String evmTransferBatch(String to, String publisher, long[] tokenIds, long[] amounts) {
String hash = null;
switch (Objects.requireNonNull(ChainTypeEnum.getByType(type))) {
case MAIN:
hash = mainClient.evmTransferBatch(abi, cAddr, EvmTokenEnum.ERC1155, 0L, to, tokenIds, amounts,
"transfer", publisher, null, false);
break;
case PARA:
hash = paraClient.evmTransferBatch(abi, cAddr, EvmTokenEnum.ERC1155, 0L, to, tokenIds, amounts,
"transfer", publisher, null, true);
break;
}
return hash;
}
//查询NFT余额 //查询NFT余额
public long evmBalance(String publisher, long tokenId) { public long evmBalance(String publisher, long tokenId) {
long balance = 0L; long balance = 0L;
......
...@@ -138,6 +138,33 @@ public class SpuController { ...@@ -138,6 +138,33 @@ public class SpuController {
return resFac.getSuccessResponseWithData(page); return resFac.getSuccessResponseWithData(page);
} }
@ApiOperation(value = "分页查询-审核列表")
@GetMapping("/goodsList/pagecheck")
public ResponseVO pageCheck(
@ApiParam(name = "goodsId", value = "商品编号")
@RequestParam(required = false) String goodsId,
@ApiParam(name = "goodsName", value = "商品名称")
@RequestParam(required = false) String goodsName,
@ApiParam(name = "status", value = "状态")
@RequestParam(required = false) Integer status,
@ApiParam(name = "addTimeHead", value = "开始时间")
@RequestParam(required = false) Long addTimeHead,
@ApiParam(name = "addTimeTail", value = "结束时间")
@RequestParam(required = false) Long addTimeTail,
@ApiParam(name = "goodsType", value = "商品类型")
@RequestParam(required = false) Integer goodsType,
@ApiParam(name = "pageNum", value = "当前页数")
@RequestParam Integer pageNum,
@ApiParam(name = "pageSize", value = "每页个数")
@RequestParam Integer pageSize,
@ApiParam(name = "adminId", value = "管理员id")
@RequestHeader String adminId) {
Admin admin = adminService.getByAdminId(adminId);
IPage<GoodsSpuVO> page = spuService.page(admin.getMerchantId(), admin.getType(), goodsId, goodsName, status,
addTimeHead, addTimeTail, goodsType, pageNum, pageSize);
return resFac.getSuccessResponseWithData(page);
}
//BUG //BUG
@ApiOperation(value = "详情") @ApiOperation(value = "详情")
@GetMapping("/goodsList/detail") @GetMapping("/goodsList/detail")
......
...@@ -54,4 +54,7 @@ public class GoodsSkuDTO { ...@@ -54,4 +54,7 @@ public class GoodsSkuDTO {
@ApiModelProperty("是否重发") @ApiModelProperty("是否重发")
private Boolean republish; private Boolean republish;
@ApiModelProperty("nft销售方式(1.原商品销售 2.拷贝销售)")
private Integer nftSalesType;
} }
...@@ -67,7 +67,7 @@ public class GoodsSpuDTO { ...@@ -67,7 +67,7 @@ public class GoodsSpuDTO {
// @NotBlank(message = MallResponseError.NULL_PARAM_ERROR) // @NotBlank(message = MallResponseError.NULL_PARAM_ERROR)
// private String templateId; // private String templateId;
@ApiModelProperty("商品通证(0.否 1.是,自动生成Token 2.是,使用外部既有Token)") @ApiModelProperty("商品通证(0.否 1.是,自动生成Token 2.是,使用外部既有Token 3.外部token使用权)")
// @NotNull(message = MallResponseError.NULL_PARAM_ERROR) // @NotNull(message = MallResponseError.NULL_PARAM_ERROR)
private Integer commodityPass; private Integer commodityPass;
......
...@@ -24,5 +24,6 @@ public class GoodsSkuVO { ...@@ -24,5 +24,6 @@ public class GoodsSkuVO {
private BigDecimal balanceNum; private BigDecimal balanceNum;
private List<SkuPropertyVO> propertyList; private List<SkuPropertyVO> propertyList;
private Integer status; private Integer status;
private Integer nftSalesType;
} }
...@@ -85,4 +85,7 @@ public class ExternalToken implements Serializable { ...@@ -85,4 +85,7 @@ public class ExternalToken implements Serializable {
@ApiModelProperty(value = "更新时间") @ApiModelProperty(value = "更新时间")
@TableField(fill = FieldFill.INSERT_UPDATE) @TableField(fill = FieldFill.INSERT_UPDATE)
private Long updateTime; private Long updateTime;
@ApiModelProperty(value = "商户id")
private String hash;
} }
...@@ -98,5 +98,7 @@ public class Sku implements Serializable { ...@@ -98,5 +98,7 @@ public class Sku implements Serializable {
@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE) @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
private Long updateTime; private Long updateTime;
@ApiModelProperty(value = "nft销售方式(1.原商品销售 2.拷贝销售)")
@TableField("nft_sales_type")
private Integer nftSalesType;
} }
...@@ -101,7 +101,6 @@ public class ExternalTokenServiceImpl extends ServiceImpl<ExternalTokenMapper, E ...@@ -101,7 +101,6 @@ public class ExternalTokenServiceImpl extends ServiceImpl<ExternalTokenMapper, E
} }
} }
} }
} else { } else {
ExternalToken externalToken = new ExternalToken(); ExternalToken externalToken = new ExternalToken();
externalToken.setCommodityPassId(UUIDUtil.getUUID()); externalToken.setCommodityPassId(UUIDUtil.getUUID());
...@@ -114,6 +113,8 @@ public class ExternalTokenServiceImpl extends ServiceImpl<ExternalTokenMapper, E ...@@ -114,6 +113,8 @@ public class ExternalTokenServiceImpl extends ServiceImpl<ExternalTokenMapper, E
externalToken.setName(name); externalToken.setName(name);
externalToken.setPublishTime(publishTime); externalToken.setPublishTime(publishTime);
externalToken.setPublisher(publisher); externalToken.setPublisher(publisher);
//TODO 唐拓接口
externalToken.setHash("xxx");
save(externalToken); save(externalToken);
} }
} }
......
...@@ -58,6 +58,14 @@ public class GoodsNftServiceImpl extends ServiceImpl<GoodsNftMapper, GoodsNft> i ...@@ -58,6 +58,14 @@ public class GoodsNftServiceImpl extends ServiceImpl<GoodsNftMapper, GoodsNft> i
//发行NFT //发行NFT
hash = chainUtil.evmPublishTokenSplit(nftAddr, timestamp, nftdto.getNumber()); hash = chainUtil.evmPublishTokenSplit(nftAddr, timestamp, nftdto.getNumber());
System.err.println("nftdto");
System.err.println(nftdto);
System.err.println(goodsId);
System.err.println(name);
System.err.println(nftAddr);
System.err.println(merchantId);
System.err.println(hash);
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("goodsId", goodsId); map.put("goodsId", goodsId);
map.put("hash", hash); map.put("hash", hash);
......
package com.fzm.mall.server.admin.goods_center.service.impl; package com.fzm.mall.server.admin.goods_center.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fzm.mall.server.admin.block_chain.util.ChainUtil;
import com.fzm.mall.server.admin.constant.MALLGlobalConfig;
import com.fzm.mall.server.admin.constant.MallResponseError; import com.fzm.mall.server.admin.constant.MallResponseError;
import com.fzm.mall.server.admin.exception.MyException; import com.fzm.mall.server.admin.exception.MyException;
import com.fzm.mall.server.admin.goods_center.entity.dto.GoodsSkuDTO; import com.fzm.mall.server.admin.goods_center.entity.dto.GoodsSkuDTO;
...@@ -56,6 +59,8 @@ public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements ISkuS ...@@ -56,6 +59,8 @@ public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements ISkuS
private DozerBeanMapper beanMapper; private DozerBeanMapper beanMapper;
@Autowired @Autowired
private IExternalTokenService externalTokenService; private IExternalTokenService externalTokenService;
@Autowired
private ChainUtil chainUtil;
@Override @Override
public void add(List<GoodsSkuDTO> kDTOs, String goodsId, String goodsName, String merchantId, Integer commodityPass, Integer pDTOType) { public void add(List<GoodsSkuDTO> kDTOs, String goodsId, String goodsName, String merchantId, Integer commodityPass, Integer pDTOType) {
...@@ -109,6 +114,42 @@ public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements ISkuS ...@@ -109,6 +114,42 @@ public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements ISkuS
uw.eq(ExternalToken::getCommodityPassId, sku.getCommodityPassId()); uw.eq(ExternalToken::getCommodityPassId, sku.getCommodityPassId());
externalTokenService.update(uw); externalTokenService.update(uw);
} }
if (commodityPass.equals(3)) {
LambdaUpdateWrapper<ExternalToken> uw = new LambdaUpdateWrapper<>();
uw.set(ExternalToken::getBindNumber, sku.getStock());
uw.set(ExternalToken::getGoodsId, goodsId);
uw.set(ExternalToken::getGoodsName, goodsName);
uw.set(ExternalToken::getStatus, 1);
uw.eq(ExternalToken::getCommodityPassId, sku.getCommodityPassId());
externalTokenService.update(uw);
if (kDTO.getNftSalesType().equals(2)) {
//发行NFT
ExternalToken externalToken = externalTokenService.queryByLabelNameAndMerchantId(kDTO.getCoinName(), merchantId);
String tokenId = externalToken.getTokenId().toString();
long[] tokenIds = new long[Math.toIntExact(kDTO.getStock())];
long[] amounts = new long[Math.toIntExact(kDTO.getStock())];
long[] nos = new long[Math.toIntExact(kDTO.getStock())];
nos[0] = 0;
for (int i = 0; i < kDTO.getStock(); i++) {
tokenIds[i] = Long.parseLong(tokenId + (i + 1));
amounts[i] = 1;
nos[i + 1] = i + 1;
}
String hash = chainUtil.evmPublishTokenSplitBatch(merchant.getNftAddr(), tokenIds, amounts);
System.err.println("tokenIds:" + tokenIds);
System.err.println("amounts:" + amounts);
System.err.println("nos:" + nos);
System.err.println("hash:" + hash);
Map<String, Object> map = new HashMap<>();
map.put("goodsId", goodsId);
map.put("hash", hash);
map.put("prefix", tokenId);
map.put("nos", JSONArray.toJSON(nos));
producer.sendTTL(map, QueueTTLTypeEnum.NFT_USU_TTL, 10 * 1000);
}
}
} }
saveBatch(skus); saveBatch(skus);
...@@ -241,6 +282,35 @@ public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements ISkuS ...@@ -241,6 +282,35 @@ public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements ISkuS
externalToken.setBindNumber(externalToken.getBindNumber().add(new BigDecimal(kDTO.getStock() - oldStock))); externalToken.setBindNumber(externalToken.getBindNumber().add(new BigDecimal(kDTO.getStock() - oldStock)));
externalTokenService.updateById(externalToken); externalTokenService.updateById(externalToken);
} }
if (commodityPass.equals(3)) {
if (kDTO.getNftSalesType().equals(2)) {
//发行NFT
ExternalToken externalToken = externalTokenService.queryByLabelNameAndMerchantId(kDTO.getCoinName(), merchantId);
String tokenId = externalToken.getTokenId().toString();
long[] tokenIds = new long[Math.toIntExact(kDTO.getStock())];
long[] amounts = new long[Math.toIntExact(kDTO.getStock())];
long[] nos = new long[Math.toIntExact(kDTO.getStock())];
nos[0] = 0;
for (int i = 0; i < kDTO.getStock(); i++) {
tokenIds[i] = Long.parseLong(tokenId + (i + 1));
amounts[i] = 1;
nos[i + 1] = i + 1;
}
String hash = chainUtil.evmPublishTokenSplitBatch(merchant.getNftAddr(), tokenIds, amounts);
System.err.println("tokenIds:" + tokenIds);
System.err.println("amounts:" + amounts);
System.err.println("nos:" + nos);
System.err.println("hash:" + hash);
Map<String, Object> map = new HashMap<>();
map.put("goodsId", goodsId);
map.put("hash", hash);
map.put("prefix", tokenId);
map.put("nos", JSONArray.toJSON(nos));
producer.sendTTL(map, QueueTTLTypeEnum.NFT_USU_TTL, 10 * 1000);
}
}
updateById(one); updateById(one);
} else { } else {
......
...@@ -116,7 +116,8 @@ public class SpuServiceImpl extends ServiceImpl<SpuMapper, Spu> implements ISpuS ...@@ -116,7 +116,8 @@ public class SpuServiceImpl extends ServiceImpl<SpuMapper, Spu> implements ISpuS
Spu spu = beanMapper.map(pDTO, Spu.class); Spu spu = beanMapper.map(pDTO, Spu.class);
spu.setGoodsId(goodsId); spu.setGoodsId(goodsId);
spu.setMerchantId(merchantId); spu.setMerchantId(merchantId);
if (pDTO.getCommodityPass() == null || pDTO.getCommodityPass().equals(0) || pDTO.getCommodityPass().equals(2)) { if (pDTO.getCommodityPass() == null || pDTO.getCommodityPass().equals(0) || pDTO.getCommodityPass().equals(2) ||
(pDTO.getSkuList().get(0) != null && pDTO.getSkuList().get(0).getNftSalesType() == 1)) {
spu.setStatus(SpuStatusEnum.WAIT_CHECK.getStatus()); spu.setStatus(SpuStatusEnum.WAIT_CHECK.getStatus());
} else { } else {
spu.setStatus(SpuStatusEnum.ISSUE.getStatus()); spu.setStatus(SpuStatusEnum.ISSUE.getStatus());
...@@ -226,7 +227,8 @@ public class SpuServiceImpl extends ServiceImpl<SpuMapper, Spu> implements ISpuS ...@@ -226,7 +227,8 @@ public class SpuServiceImpl extends ServiceImpl<SpuMapper, Spu> implements ISpuS
} }
Spu spu = beanMapper.map(eDTO, Spu.class); Spu spu = beanMapper.map(eDTO, Spu.class);
if (eDTO.getCommodityPass() == null || eDTO.getCommodityPass().equals(0) || eDTO.getCommodityPass().equals(2) || type.equals(6)) { if (eDTO.getCommodityPass() == null || eDTO.getCommodityPass().equals(0) || eDTO.getCommodityPass().equals(2) || type.equals(6) ||
(eDTO.getSkuList().get(0) != null && eDTO.getSkuList().get(0).getNftSalesType() == 1)) {
spu.setStatus(SpuStatusEnum.WAIT_CHECK.getStatus()); spu.setStatus(SpuStatusEnum.WAIT_CHECK.getStatus());
} else { } else {
spu.setStatus(SpuStatusEnum.ISSUE.getStatus()); spu.setStatus(SpuStatusEnum.ISSUE.getStatus());
...@@ -367,8 +369,7 @@ public class SpuServiceImpl extends ServiceImpl<SpuMapper, Spu> implements ISpuS ...@@ -367,8 +369,7 @@ public class SpuServiceImpl extends ServiceImpl<SpuMapper, Spu> implements ISpuS
qw2.eq(ExternalToken::getLabelName, sku.getCoinName()); qw2.eq(ExternalToken::getLabelName, sku.getCoinName());
qw2.eq(ExternalToken::getMerchantId, spu.getMerchantId()); qw2.eq(ExternalToken::getMerchantId, spu.getMerchantId());
ExternalToken externalToken = externalTokenService.getOne(qw2); ExternalToken externalToken = externalTokenService.getOne(qw2);
String hash = chainUtil.getGoodsHash(externalToken.getTokenId(), merchantService.getByMerchantId(spu.getMerchantId()).getNftAddr()); spu.setHash(externalToken.getHash());
spu.setHash(hash);
} }
spu.setStatus(type); spu.setStatus(type);
updateById(spu); updateById(spu);
......
package com.fzm.mall.server.admin.mq.config.goods_center;
import com.fzm.mall.server.admin.mq.enums.QueueTTLTypeEnum;
import com.fzm.mall.server.admin.mq.enums.QueueTypeEnum;
import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author wangp
* @description 批量发行使用权
* @date 2020/10/20 17:39
*/
@Configuration
public class UsuNftConfig {
@Bean
DirectExchange usuNftDirect() {
return (DirectExchange) ExchangeBuilder.directExchange(QueueTypeEnum.NFT_USU.getExchange())
.durable(true).build();
}
@Bean
DirectExchange usuNftTTLDirect() {
return (DirectExchange) ExchangeBuilder.directExchange(QueueTTLTypeEnum.NFT_USU_TTL.getExchange())
.durable(true).build();
}
@Bean
public Queue usuNftQueue() {
return new Queue(QueueTypeEnum.NFT_USU.getQueue());
}
@Bean
public Queue usuNftTTLQueue() {
return QueueBuilder.durable(QueueTTLTypeEnum.NFT_USU_TTL.getQueue())
// 配置到期后转发的交换
.withArgument("x-dead-letter-exchange", QueueTypeEnum.NFT_USU.getExchange())
// 配置到期后转发的路由键
.withArgument("x-dead-letter-routing-key", QueueTypeEnum.NFT_USU.getQueueKey()).build();
}
@Bean
Binding usuNftBinding(DirectExchange usuNftDirect, Queue usuNftQueue) {
return BindingBuilder.bind(usuNftQueue).to(usuNftDirect).with(QueueTypeEnum.NFT_USU.getQueueKey());
}
@Bean
public Binding usuNftTTLBinding(Queue usuNftTTLQueue, DirectExchange usuNftTTLDirect) {
return BindingBuilder.bind(usuNftTTLQueue).to(usuNftTTLDirect)
.with(QueueTTLTypeEnum.NFT_USU_TTL.getQueueKey());
}
}
...@@ -2,8 +2,11 @@ package com.fzm.mall.server.admin.mq.consumer.goods_center; ...@@ -2,8 +2,11 @@ package com.fzm.mall.server.admin.mq.consumer.goods_center;
import cn.fzm.chain.simplesdk.constant.TxStatusEnum; import cn.fzm.chain.simplesdk.constant.TxStatusEnum;
import cn.fzm.chain.simplesdk.model.TxResult; import cn.fzm.chain.simplesdk.model.TxResult;
import com.alibaba.fastjson.JSONArray;
import com.fzm.mall.server.admin.block_chain.util.ChainUtil; import com.fzm.mall.server.admin.block_chain.util.ChainUtil;
import com.fzm.mall.server.admin.goods_center.enums.status.SpuStatusEnum; import com.fzm.mall.server.admin.goods_center.enums.status.SpuStatusEnum;
import com.fzm.mall.server.admin.goods_center.model.GoodsSkuUsufruct;
import com.fzm.mall.server.admin.goods_center.service.IGoodsSkuUsufructService;
import com.fzm.mall.server.admin.goods_center.service.ISkuService; import com.fzm.mall.server.admin.goods_center.service.ISkuService;
import com.fzm.mall.server.admin.goods_center.service.ISpuService; import com.fzm.mall.server.admin.goods_center.service.ISpuService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
...@@ -27,6 +30,7 @@ public class NftConsumer { ...@@ -27,6 +30,7 @@ public class NftConsumer {
private final ISpuService spuService; private final ISpuService spuService;
private final ChainUtil chainUtil; private final ChainUtil chainUtil;
private final IGoodsSkuUsufructService goodsSkuUsufructService;
//发行 //发行
@RabbitListener(queues = "ly.issue.nft.queue") @RabbitListener(queues = "ly.issue.nft.queue")
...@@ -50,4 +54,33 @@ public class NftConsumer { ...@@ -50,4 +54,33 @@ public class NftConsumer {
} }
} }
//发行
@RabbitListener(queues = "ly.usu.nft.queue")
public void usuCoinsPrice(Map<String, Object> obj) {
try {
String goodsId = obj.get("goodsId") + "";
String hash = obj.get("hash") + "";
String prefix = obj.get("prefix") + "";
String nos = obj.get("nos") + "";
System.err.println("obj:" + obj);
//发行token
TxResult tr = chainUtil.cycleConfirmTxWithHash(hash);
log.info("map=========================" + tr.getStatus());
if (tr.getStatus() != TxStatusEnum.SUCCESS) {
log.error("NFT发行失败,交易HASH:{},失败原因:{}", hash, tr.getErrMsg());
spuService.updateStatus(goodsId, SpuStatusEnum.FAIL.getStatus(), tr.getErrMsg().getValue());
// skuService.updateStatus(skuId, SkuStatusEnum.ISSUE_FAIL.getStatus(), tr.getErrMsg().getValue());
} else {
spuService.updateStatus(goodsId, SpuStatusEnum.WAIT_CHECK.getStatus(), "");
GoodsSkuUsufruct goodsSkuUsufruct = new GoodsSkuUsufruct();
goodsSkuUsufruct.setPrefix(prefix);
goodsSkuUsufruct.setSerialNo(nos.toString());
goodsSkuUsufructService.save(goodsSkuUsufruct);
}
} catch (Exception e) {
return;
}
}
} }
...@@ -34,7 +34,9 @@ public enum QueueTTLTypeEnum { ...@@ -34,7 +34,9 @@ public enum QueueTTLTypeEnum {
// 用户资产充值、扣除 // 用户资产充值、扣除
USER_ASSETS_RECHARGE_OR_DEDUCTION_TTL(MALLGlobalConfig.PROJECT_PREFIX + "-user-assets-recharge-or-deduction-ttl-exchange", MALLGlobalConfig.PROJECT_PREFIX + ".user.assets.recharge.or.deduction.ttl.queue", MALLGlobalConfig.PROJECT_PREFIX + ".user.assets.recharge.or.deduction.ttl.key"), USER_ASSETS_RECHARGE_OR_DEDUCTION_TTL(MALLGlobalConfig.PROJECT_PREFIX + "-user-assets-recharge-or-deduction-ttl-exchange", MALLGlobalConfig.PROJECT_PREFIX + ".user.assets.recharge.or.deduction.ttl.queue", MALLGlobalConfig.PROJECT_PREFIX + ".user.assets.recharge.or.deduction.ttl.key"),
// 发行nft // 发行nft
NFT_ISSUE_TTL(MALLGlobalConfig.PROJECT_PREFIX + "-issue-nft-ttl-exchange", MALLGlobalConfig.PROJECT_PREFIX + ".issue.nft.ttl.queue", MALLGlobalConfig.PROJECT_PREFIX + ".issue.nft.ttl.key"); NFT_ISSUE_TTL(MALLGlobalConfig.PROJECT_PREFIX + "-issue-nft-ttl-exchange", MALLGlobalConfig.PROJECT_PREFIX + ".issue.nft.ttl.queue", MALLGlobalConfig.PROJECT_PREFIX + ".issue.nft.ttl.key"),
// 批量发行使用权
NFT_USU_TTL(MALLGlobalConfig.PROJECT_PREFIX + "-usu-nft-ttl-exchange", MALLGlobalConfig.PROJECT_PREFIX + ".usu.nft.ttl.queue", MALLGlobalConfig.PROJECT_PREFIX + ".usu.nft.ttl.key");
private String exchange; private String exchange;
......
...@@ -38,7 +38,9 @@ public enum QueueTypeEnum { ...@@ -38,7 +38,9 @@ public enum QueueTypeEnum {
//用户支付有效订单后得7-8天内,发送升级积分 //用户支付有效订单后得7-8天内,发送升级积分
USER_MEMBER_UP(MALLGlobalConfig.PROJECT_PREFIX + "-memberup-exchange", MALLGlobalConfig.PROJECT_PREFIX + ".memberup.queue", MALLGlobalConfig.PROJECT_PREFIX + ".memberup.key"), USER_MEMBER_UP(MALLGlobalConfig.PROJECT_PREFIX + "-memberup-exchange", MALLGlobalConfig.PROJECT_PREFIX + ".memberup.queue", MALLGlobalConfig.PROJECT_PREFIX + ".memberup.key"),
//发行nft //发行nft
NFT_ISSUE(MALLGlobalConfig.PROJECT_PREFIX + "-issue-nft-exchange", MALLGlobalConfig.PROJECT_PREFIX + ".issue.nft.queue", MALLGlobalConfig.PROJECT_PREFIX + ".issue.nft.key"); NFT_ISSUE(MALLGlobalConfig.PROJECT_PREFIX + "-issue-nft-exchange", MALLGlobalConfig.PROJECT_PREFIX + ".issue.nft.queue", MALLGlobalConfig.PROJECT_PREFIX + ".issue.nft.key"),
//批量发行使用权
NFT_USU(MALLGlobalConfig.PROJECT_PREFIX + "-usu-nft-exchange", MALLGlobalConfig.PROJECT_PREFIX + ".usu.nft.queue", MALLGlobalConfig.PROJECT_PREFIX + ".usu.nft.key");
private String exchange; private String exchange;
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
<result column="type" property="type" /> <result column="type" property="type" />
<result column="create_time" property="createTime" /> <result column="create_time" property="createTime" />
<result column="update_time" property="updateTime" /> <result column="update_time" property="updateTime" />
<result column="hash" property="hash" />
</resultMap> </resultMap>
<select id="page" resultType="com.fzm.mall.server.admin.goods_center.entity.dto.ExternalTokenDTO"> <select id="page" resultType="com.fzm.mall.server.admin.goods_center.entity.dto.ExternalTokenDTO">
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
<result column="err_msg" property="errMsg"/> <result column="err_msg" property="errMsg"/>
<result column="create_time" property="createTime"/> <result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/> <result column="update_time" property="updateTime"/>
<result column="nft_sales_type" property="nftSalesType"/>
</resultMap> </resultMap>
</mapper> </mapper>
...@@ -2481,4 +2481,10 @@ ALTER TABLE `goods_spu` ...@@ -2481,4 +2481,10 @@ ALTER TABLE `goods_spu`
ADD COLUMN `hash` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '通邦nfthash', AFTER `nft_file`; ADD COLUMN `hash` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '通邦nfthash', AFTER `nft_file`;
ALTER TABLE `opration_function` ALTER TABLE `opration_function`
ADD COLUMN `param` varchar(500) NOT NULL DEFAULT '' COMMENT '功能区跳转参数'; ADD COLUMN `param` varchar(500) NOT NULL DEFAULT '' COMMENT '功能区跳转参数';
\ No newline at end of file
ALTER TABLE `goods_sku`
ADD COLUMN `nft_sales_type` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'nft销售方式(1.原商品销售 2.拷贝销售)';
ALTER TABLE `external_token`
ADD COLUMN `hash` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '外部hash表';
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment