记得上下班打卡 | git大法好,push需谨慎

Commit ac00bc74 authored by 胡佳晨's avatar 胡佳晨

galaxy - goblin 合并

parent 05d5130b
......@@ -75,7 +75,7 @@
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-service-galaxy-common</artifactId>
<artifactId>liquidnet-service-goblin-common</artifactId>
<version>1.0-SNAPSHOT</version>
<exclusions>
<exclusion>
......
......@@ -6,7 +6,7 @@ liquidnet:
username: user
password: user123
eureka:
host: 39.107.71.112:7001
host: 127.0.0.1:7001
# end-dev-这里是配置信息基本值
spring:
......
use dev_ln_scene;
#创建集合
db.createCollection("GalaxyUserInfoVo");
db.createCollection("GalaxySeriesInfoVo");
db.createCollection("GalaxySeriesNftInfoVo");
db.createCollection("GalaxySeriesNftUploadVo");
db.createCollection("GalaxyNftOrderVo");
db.createCollection("GalaxyNftOrderBindVo");
db.createCollection("GalaxyNftOrderFailLogVo");
db.createCollection("GalaxyNftTradeVo");
#创建索引
db.GalaxyUserInfoVo.createIndex({userId:"hashed"});
db.GalaxySeriesInfoVo.createIndex({seriesCode:"hashed"});
db.GalaxySeriesNftInfoVo.createIndex({skuId:"hashed"});
db.GalaxySeriesNftUploadVo.createIndex({skuId:"hashed"});
db.GalaxyNftOrderVo.createIndex({nftOrderPayId:"hashed"});
db.GalaxyNftOrderBindVo.createIndex({nftOrderPayId:"hashed"});
db.GalaxyNftOrderFailLogVo.createIndex({nftOrderPayId:"hashed"});
db.GalaxyNftTradeVo.createIndex({nftId:"hashed"});
#创建分片
sh.enableSharding("dev_ln_scene");
sh.shardCollection("dev_ln_scene.GalaxyUserInfoVo",{"userId":"hashed"});
sh.shardCollection("dev_ln_scene.GalaxySeriesInfoVo",{"seriesCode":"hashed"});
sh.shardCollection("dev_ln_scene.GalaxySeriesNftInfoVo",{"skuId":"hashed"});
sh.shardCollection("dev_ln_scene.GalaxySeriesNftUploadVo",{"skuId":"hashed"});
sh.shardCollection("dev_ln_scene.GalaxyNftOrderVo",{"nftOrderPayId":"hashed"});
sh.shardCollection("dev_ln_scene.GalaxyNftOrderBindVo",{"nftOrderPayId":"hashed"});
sh.shardCollection("dev_ln_scene.GalaxyNftOrderFailLogVo",{"nftOrderPayId":"hashed"});
sh.shardCollection("dev_ln_scene.GalaxyNftTradeVo",{"nftId":"hashed"});
\ No newline at end of file
drop TABLE if exists `galaxy_user_info`;
create table galaxy_user_info
(
mid bigint unsigned NOT NULL AUTO_INCREMENT,
user_id varchar(200) NOT NULL COMMENT '用户ID',
user_name varchar(200) NOT NULL COMMENT '用户姓名',
user_type varchar(3) NOT NULL DEFAULT '2' COMMENT '1企业 2个人',
mobile varchar(20) COMMENT '移动手机号',
id_card_type varchar(3) NOT NULL COMMENT '证件类型( 1-身份证 2-护照 3-港澳通行证 4-台湾通行证 5-外国人永居身份证 6-港澳台居民居住证 7-其它)',
id_card varchar(50) NOT NULL COMMENT '证件号码',
mnemonic varchar(200) COMMENT '助记词',
mnemonic_index varchar(3) NOT NULL DEFAULT '0' COMMENT '助记词索引',
user_identification varchar(200) COMMENT '用户链上唯一ID',
user_pub_key varchar(500) COMMENT '用户公钥',
user_pri_key varchar(500) COMMENT '用户私钥',
block_chain_address varchar(200) COMMENT '区块链地址',
router_type varchar(200) NOT NULL COMMENT '路由类型(zxinchain、eth、antchain)',
created_at timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`mid`)
) ENGINE = InnoDB comment '数字藏品用户信息';
create index gui_idx_user_id on galaxy_user_info (user_id);
drop TABLE if exists `galaxy_series_info`;
create table galaxy_series_info
(
mid bigint unsigned NOT NULL AUTO_INCREMENT,
series_info_id varchar(100) NOT NULL COMMENT '系列存储ID',
series_name varchar(28) NOT NULL COMMENT '本地系列唯一名称(前缀+skuid)',
series_code varchar(200) NOT NULL COMMENT '系列编码',
series_id varchar(200) COMMENT '区块链上系列ID',
total_count varchar(50) COMMENT '系列发行总量',
crt_count varchar(200) COMMENT '系列已发行个数',
series_claim_task_id varchar(200) COMMENT '系列声明任务ID',
series_claim_status varchar(200) COMMENT '系列声明状态',
cover_url varchar(1000) COMMENT '系列显示封面',
series_desc varchar(200) COMMENT '系列描述信息,不超过500个字符',
chain_timestamp varchar(30) COMMENT '系列链上声明时间',
trade_hash varchar(100) COMMENT '系列链上交易hash',
nft_count int default 0 COMMENT '系列中包含nft个数',
router_type varchar(200) NOT NULL COMMENT '路由类型(zxinchain、eth、antchain)',
created_at timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`mid`)
) ENGINE = InnoDB comment '数字藏品系列信息';
create index gsi_idx_series_code on galaxy_series_info (series_code);
create index gsi_idx_series_info_id on galaxy_series_info (series_info_id);
drop TABLE if exists `galaxy_series_nft_info`;
create table galaxy_series_nft_info
(
mid bigint unsigned NOT NULL AUTO_INCREMENT,
series_nft_info_id varchar(100) NOT NULL COMMENT '系列nft存储ID',
series_info_id varchar(100) NOT NULL COMMENT '系列存储ID',
sku_id varchar(200) NOT NULL COMMENT '本地系列nft唯一标识id',
series_name varchar(28) NOT NULL COMMENT '本地系列唯一名称(前缀+skuid)',
series_code varchar(200) NOT NULL COMMENT '本地系列唯一编码',
series_id varchar(200) COMMENT '区块链上系列ID',
nft_total_count varchar(50) COMMENT '系列nft发行总量',
nft_crt_count varchar(200) COMMENT '系列nft已发行个数',
nft_id_begin varchar(200) COMMENT '系列nft发行开始id',
nft_id_begin_index int default 0 COMMENT 'nftId开始索引',
nft_publish_number int default 1 COMMENT 'nft系列发行序号',
original_nft_url varchar(1000) COMMENT 'nft素材原始地址',
original_display_url varchar(1000) COMMENT 'nft显示素材原始地址',
author varchar(200) COMMENT '作者名',
nft_name varchar(200) COMMENT 'nft名字(sku名称)',
nft_url varchar(1000) COMMENT 'nft素材地址',
display_url varchar(1000) COMMENT '预览图url,不超过1024个字符',
nft_desc varchar(400) COMMENT 'nft简介,500个字符以内',
nft_flag varchar(200) COMMENT '标签,【文创】,游戏,动漫,30个字符以内',
sell_count varchar(200) COMMENT '可售状态下有意义',
nft_hash varchar(200) COMMENT ' 系列声明中nftHash',
router_type varchar(200) NOT NULL COMMENT '路由类型(zxinchain、eth、antchain)',
created_at timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`mid`)
) ENGINE = InnoDB comment '数字藏品系列nft信息';
-- alter table galaxy_series_nft_info add nft_id_begin_index int default 0 comment 'nftId开始索引' after nft_id_begin;
-- alter table galaxy_series_nft_info add nft_publish_number int default 1 comment 'nft系列发行序号' after nft_id_begin_index;
create index gsni_idx_series_nft_info_id on galaxy_series_nft_info (series_nft_info_id);
create index gsni_idx_series_info_id on galaxy_series_nft_info (series_info_id);
create index gsni_idx_sku_id on galaxy_series_nft_info (sku_id);
create index gsni_idx_series_code on galaxy_series_nft_info (series_code);
drop TABLE if exists `galaxy_nft_order_info`;
create table galaxy_nft_order_info
(
mid bigint unsigned NOT NULL AUTO_INCREMENT,
nft_order_pay_id varchar(100) COMMENT '订单支付唯一ID',
user_id varchar(200) NOT NULL COMMENT '用户ID',
sku_id varchar(200) NOT NULL COMMENT '应用系统购买系列唯一ID',
series_name varchar(28) NOT NULL COMMENT '系列的唯一名称(前缀+skuid)',
series_id varchar(200) COMMENT '系列的唯一Id',
series_code varchar(200) NOT NULL COMMENT '本地系列唯一编码',
nft_id varchar(200) COMMENT 'nftId',
nft_name varchar(200) COMMENT 'nft名字(sku名称)',
nft_price varchar(50) COMMENT 'nft购买价格',
nft_publish_task_id varchar(100) COMMENT 'nft发行任务id',
nft_publish_from_address varchar(200) COMMENT 'nft发行转出方地址',
nft_publish_to_address varchar(200) COMMENT 'nft发行转入方地址',
nft_publish_chain_timestamp varchar(30) COMMENT 'nft发行时间',
nft_publish_status varchar(30) COMMENT 'nft发行状态',
nft_publish_trade_hash varchar(100) COMMENT 'nft发行交易hash',
nft_buy_task_id varchar(100) COMMENT 'nft购买任务id',
nft_buy_from_address varchar(200) COMMENT 'nft购买转出方地址',
nft_buy_to_address varchar(200) COMMENT 'nft购买转入方地址',
nft_buy_chain_timestamp varchar(30) COMMENT 'nft购买时间',
nft_buy_status varchar(30) COMMENT 'nft购买状态',
nft_buy_trade_hash varchar(100) COMMENT 'nft购买交易hash',
nft_buy_pay_task_id varchar(100) COMMENT 'nft购买支付任务id',
router_type varchar(20) NOT NULL COMMENT '路由类型(zxinchain、eth、antchain)',
created_at timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`mid`)
) ENGINE = InnoDB comment '数字藏品订单信息';
-- alter table galaxy_nft_order_info add nft_name varchar(200) comment 'nft名字' after nft_id;
create index gsoi_idx_nft_order_pay_id on galaxy_nft_order_info (nft_order_pay_id);
create index gsoi_idx_user_id on galaxy_nft_order_info (user_id);
create index gsoi_idx_sku_id on galaxy_nft_order_info (sku_id);
create index gsoi_idx_series_code on galaxy_nft_order_info (series_code);
drop TABLE if exists `galaxy_nft_trade_info`;
create table galaxy_nft_trade_info
(
mid bigint unsigned NOT NULL AUTO_INCREMENT,
user_id varchar(200) NOT NULL COMMENT '用户ID',
nft_id varchar(200) COMMENT 'nftId',
nft_name varchar(200) COMMENT 'nft名字(sku名称)',
series_name varchar(28) NOT NULL COMMENT '系列的唯一名称',
series_id varchar(200) COMMENT '系列的唯一Id',
series_code varchar(200) NOT NULL COMMENT '本地系列唯一编码',
trade_hash varchar(200) COMMENT '交易hash',
chain_timestamp varchar(20) COMMENT '链上交易时间戳',
from_address varchar(200) COMMENT '转出方地址',
to_address varchar(200) COMMENT '转入方地址',
trade_price bigint COMMENT '交易价格',
trade_type varchar(3) COMMENT '交易类别 1发行 2购买 3转移 4设置价格 5设置状态',
router_type varchar(20) NOT NULL COMMENT '路由类型(zxinchain、eth、antchain)',
created_at timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`mid`)
) ENGINE = InnoDB comment '数字藏品交易信息';
create index gnti_idx_user_id on galaxy_nft_trade_info (user_id);
create index gnti_idx_nft_id on galaxy_nft_trade_info (nft_id);
create index gnti_idx_series_code on galaxy_nft_trade_info (series_code);
drop TABLE if exists `galaxy_nft_order_fail_log`;
create table galaxy_nft_order_fail_log
(
mid bigint unsigned NOT NULL AUTO_INCREMENT,
nft_order_pay_id varchar(100) COMMENT '订单支付唯一ID',
user_id varchar(200) NOT NULL COMMENT '用户ID',
nft_id varchar(200) COMMENT 'nftId',
nft_name varchar(200) COMMENT 'nft名字(sku名称)',
series_name varchar(28) NOT NULL COMMENT '系列的唯一名称',
series_id varchar(200) COMMENT '系列的唯一Id',
series_code varchar(200) NOT NULL COMMENT '本地系列唯一编码',
taskId varchar(100) COMMENT '任务ID',
fail_reason_desc varchar(20) COMMENT '失败原因',
fail_reason_desc_second varchar(20) COMMENT '失败原因2',
trade_type varchar(3) COMMENT '交易类别 1发行 2购买 3转移 4设置价格 5设置状态',
router_type varchar(20) NOT NULL COMMENT '路由类型(zxinchain、eth、antchain)',
deal_with_status varchar(3) COMMENT '处理状态 0数据初始化 1已处理成功 2处理失败 3不做处理',
created_at timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`mid`)
) ENGINE = InnoDB comment '数字藏品发行购买失败记录表';
create index gnofl_idx_nft_order_pay_id on galaxy_nft_order_fail_log (nft_order_pay_id);
create index gnofl_idx_user_id on galaxy_nft_order_fail_log (user_id);
create index gnofl_idx_nft_id on galaxy_nft_order_fail_log (nft_id);
create index gnofl_idx_series_code on galaxy_nft_order_fail_log (series_code);
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>liquidnet-service-galaxy</artifactId>
<groupId>com.liquidnet</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>liquidnet-service-galaxy-impl</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-common-third-zxlnft</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-common-third-antchain</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-service-galaxy-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-service-galaxy-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
package com.liquidnet.service;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.core.env.Environment;
import java.net.InetAddress;
import java.util.Arrays;
@Slf4j
@EnableFeignClients
@SpringBootApplication(scanBasePackages = {"com.liquidnet"})
public class ServiceGalaxyApplication implements CommandLineRunner {
@Autowired
private Environment environment;
public static void main(String[] args) {
SpringApplication.run(ServiceGalaxyApplication.class, args);
}
@Override
public void run(String... strings) {
try {
log.info("\n----------------------------------------------------------\n\t" +
"Application '{}' is running! Access URLs:\n\t" +
"Local: \t\thttp://127.0.0.1:{}\n\t" +
"External: \thttp://{}:{}{}/doc.html\n\t" +
"Profile(s): \t{}\n----------------------------------------------------------",
environment.getProperty("spring.application.name"),
environment.getProperty("server.port"),
InetAddress.getLocalHost().getHostAddress(),
environment.getProperty("server.port"),
environment.getProperty("server.servlet.context-path"),
Arrays.toString(environment.getActiveProfiles()));
} catch (Exception e) {
e.printStackTrace();
}
}
}
# begin-dev-这里是配置信息基本值
liquidnet:
cloudConfig:
profile: dev
security:
username: user
password: user123
eureka:
host: 39.107.71.112:7001
# end-dev-这里是配置信息基本值
spring:
profiles:
include: service-galaxy
# begin-dev-这里是配置信息基本值
liquidnet:
cloudConfig:
profile: prod
security:
username: user
password: user123
eureka:
host: 172.17.207.189:7001
# end-dev-这里是配置信息基本值
spring:
profiles:
include: service-galaxy
\ No newline at end of file
#eurekaServer配置
eureka:
client:
register-with-eureka: false
fetch-registry: true
serviceUrl:
defaultZone: http://${liquidnet.security.username}:${liquidnet.security.password}@${liquidnet.eureka.host}/eureka-server/eureka
#configServer配置
spring:
cloud:
config:
# uri: http://39.105.38.151:7002/support-config
# uri: http://39.106.122.201:7002/support-config
# uri: http://127.0.0.1:7002/support-config
profile: ${liquidnet.cloudConfig.profile}
name: ${spring.application.name} #默认为spring.application.name
discovery:
enabled: true
service-id: liquidnet-support-config
# begin-dev-这里是配置信息基本值
liquidnet:
cloudConfig:
profile: test
security:
username: user
password: user123
eureka:
host: 172.17.207.177:7001
#instance:
# prefer-ip-address: true
#host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka
#host: 192.168.193.41:7001
# end-dev-这里是配置信息基本值
spring:
profiles:
include: service-galaxy
40001=登录信息有误
40002=账号已在另一台设备登录
40003=登录已过期
# ------------------------ 4开头错误码作系统保留
package com.liquidnet.service.galaxy;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.galaxy.constant.GalaxyConstant;
import com.liquidnet.service.galaxy.constant.GalaxyEnum;
import com.liquidnet.service.galaxy.dto.bo.GalaxySeriesNftUploadTempSecretBo;
import com.liquidnet.service.galaxy.dto.bo.GalaxyUserInfoBo;
import com.liquidnet.service.galaxy.utils.GalaxyDataUtils;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: TestRedisUtil
* @Package com.liquidnet.service.galaxy
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2022/3/15 16:26
*/
@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class TestRedisUtil {
// @Autowired
// private RedisDataSourceUtil redisUtil;
@Autowired
private RedisUtil redisUtil;
private long keyExpireTime = 3600*24*30;
@Autowired
private GalaxyDataUtils dataUtils;
@Test
public void testdd(){
// ZxlnftResponseDto responseDto = new ZxlnftResponseDto();
}
@Test
public void testSeriesNftUploadTempSecretBo(){
String uploadSeriesName = "11111111";
GalaxySeriesNftUploadTempSecretBo userInfoBo = GalaxySeriesNftUploadTempSecretBo.getNew();
userInfoBo.setTempSecretId("AKIDmmC9x9YypxXVcjE1_2WQiF2bl-6hjK2rSCL41KZAQ7ww3PRUdxIo7smIkiNNR42A");
userInfoBo.setTempSecretKey("/kqQu5LtPB+QgKu9qxSGPpc2gRGqxI2/Y7mmGsKMunk=");
userInfoBo.setSessionToken("7iDfIMWATI4RHfwyI8y7ayi797w4XH6ad8ff7ac1551061438ecdc80ca75a02a1C7w2Ik6j3f4OR-mJFVEDbBTECA-ZQAoizRqoeU-ngT3hboSVFvxH5Q7m8YiccL805oXIKtEBs-9y1jg1sCA8EaarPXZsqG0rHzG5M9mJouoYKOu1W5wo8U-01X2s5zOtDmN1A-NS6JbAm0USePfVRcDlBX0eJ-4Hn6I-Gkf6g-ZeuB2Y9d4HRCiAbdJgjAPVaP_c4On6ae1WZhX5WynRPk31l-iI91k616h32ID81WbVBqbh0ZPR2c_ojy12tB2OWuQjArHVJ7WsW037WVU3LR2W_ulXH3jiD1wjBxBvWjVR3LJnIp4muomYGSu1a4bpaAhDsirm1rj4JDHWvcQDX0H-nzgkh6_ts3veOrUmeXayNwd0s-WzQnhLPn7F9x9jGDqVUFgLq2dr5OvEnENw73qpE9lU8TFqwwbDMgu9ofnLORwhwRPF7Bd3zYeBadCgE3K-BnuQ7ibs7rKoDg4uI_lrelvVrjAQuGPdodpiCqScekyWjm6uucqsKu7rtzO6-ucE6ai6EtLVCAvqAtQsMRUdWbZtc0J3yFCEKuIXVyfG-Dy202LnWV2_av4iSLcpGMEre7k14g21FfdLLDOxzbJEHpFHlkiLJEguJ0A4I-EgStyRUAtCd-q0JNNMUkoV5rzUONM184dn58e_IUwD53mcioL0CaBKzCJXtSb7CWnxdvNT8vlJ53TQbkMlh2q-qlFAL7QZaQRKFymRO_GU44s1KgrGWLsM2AuofxVKH1fZbXk7KiRV6FtwYbFuXr1DGN6sr1asAZOSIFBAvR7aUaKQfs1ljLIf8iWvyYrU3pM");
userInfoBo.setUploadAddress("https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/NOW_ZXL_NFT_PIC001_test_skuId001/");
userInfoBo.setTimestamp(DateUtil.getNowTime());
dataUtils.setSeriesNftUploadTempSecretBo(uploadSeriesName,userInfoBo);
GalaxySeriesNftUploadTempSecretBo seriesNftUploadTempSecretBo = dataUtils.getSeriesNftUploadTempSecretBo(uploadSeriesName);
System.out.println(seriesNftUploadTempSecretBo.toString());
}
@Test
public void testSet(){
String userId = "test123";
GalaxyUserInfoBo userInfoBo = GalaxyUserInfoBo.getNew();
userInfoBo.setUserId(userId);
String key = GalaxyConstant.REDIS_KEY_GALAXY_USER.concat(GalaxyEnum.RouterTypeEnum.ZXINCHAIN.getCode()).concat(":") + userId;
// redisUtil.getRedisGalaxyUtil().set(key,userInfoBo,keyExpireTime);
}
@Test
public void testGetNftIdNo(){
String routerType = "zxinchain";
String skuId = "1234567890-sku-010";
// redisUtil.set(GalaxyConstant.REDIS_KEY_GALAXY_PUBLISH_NFT.concat(routerType).concat(":").concat(skuId),2000);
long nftIdNo = dataUtils.incrNftIdNo(routerType,skuId);
// long nftIdNo = dataUtils.getNftIdNo(routerType,skuId);
System.out.println("skuId:"+skuId+" no:"+nftIdNo+" ");
}
}
package com.liquidnet.service.galaxy;
import com.liquidnet.service.galaxy.constant.GalaxyEnum;
import com.liquidnet.service.galaxy.dto.param.GalaxyNftUploadReqDto;
import com.liquidnet.service.galaxy.router.zxin.biz.ZxinArtworkBiz;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: TestZxinArtworkBiz
* @Package com.liquidnet.service.galaxy
* @Copyright: LightNet @ Copyright (c) 2022
* @date 2022/3/19 16:54
*/
@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class TestZxinArtworkBiz {
private static final String oldUrl = "https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/NOW_ZXL_NFT_PIC001_skuId001_test/2022-03-19/ZXLNFTIMAGE202203191647596747100501.mp4";
@Autowired
private ZxinArtworkBiz artworkBiz;
@Test
public void nftUpload(){
GalaxyNftUploadReqDto nftUploadReqDto = GalaxyNftUploadReqDto.getNew();
nftUploadReqDto.setSkuId("video_test_001");
nftUploadReqDto.setOriginalNftUrl(oldUrl);
nftUploadReqDto.setRouterType(GalaxyEnum.RouterTypeEnum.ZXINCHAIN.getCode());
artworkBiz.nftUpload(nftUploadReqDto);
}
}
package com.liquidnet.service.galaxy;
import com.liquidnet.common.third.zxlnft.biz.ZxlnftBiz;
import com.liquidnet.common.third.zxlnft.config.ZxlnftConfig;
import com.liquidnet.common.third.zxlnft.dto.Nft022UploadSecretReqDto;
import com.liquidnet.common.third.zxlnft.dto.Nft022UploadSecretRespDto;
import com.liquidnet.common.third.zxlnft.dto.ZxlnftResponseDto;
import com.liquidnet.common.third.zxlnft.dto.wallet.*;
import com.liquidnet.common.third.zxlnft.util.ZxlWalletSdkUtil;
import com.liquidnet.common.third.zxlnft.util.ZxlnftSdkUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.commons.lang.util.StringUtil;
import com.liquidnet.service.galaxy.biz.GalaxyCommonBiz;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.nio.charset.StandardCharsets;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: TestZxlnftSdkUtil
* @Package com.liquidnet.common.third.zxlnft.test
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2022/2/18 13:49
*/
@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class TestZxlWalletSdkUtil {
private static String platFormPubKey1 = "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAE+h73KDgGzZznkP02tXTc0DU3mfXp\nvr7KWAlB63p8J2SU9FtusK5ApcbjoqgPunIkpChvRHQuVKyQpZtBDza3lQ==\n-----END PUBLIC KEY-----\n";
private static String zhouhuanPubKey1 = "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAERAYCoqlcb1/C+b085HO4RWbIFx/n\nw6zkU3tvIYhBi1Xjj7GMdE/dR6D2fCQGWHqdYwQUb6/kS67Yjx47prxREg==\n-----END PUBLIC KEY-----\n";
private static String zhouhuanPriKey1 = "-----BEGIN PRIVATE KEY-----\nMIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQgjSDapAU4gujWk9mM\nCE1tOokocdKrHMkfvZ0vfaWM+MOgCgYIKoEcz1UBgi2hRANCAAREBgKiqVxvX8L5\nvTzkc7hFZsgXH+fDrORTe28hiEGLVeOPsYx0T91HoPZ8JAZYep1jBBRvr+RLrtiP\nHjumvFES\n-----END PRIVATE KEY-----\n";
private static String zhouhuanPubKey2 = "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAELZtnP30dbtdFrvherJxfpPEQP+q3\nRyrtECAuEwZg3o8/RLJva0O6unNLHGavkwd77l5UgvX4cPNoX/OV6n/3xQ==\n-----END PUBLIC KEY-----\n";
private static String zhouhuanPriKey2 = "-----BEGIN PRIVATE KEY-----\nMIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQgNBYWsObyiuXLIZZZ\nPa0P/aNSrlf3//TLkdhZsDroRNugCgYIKoEcz1UBgi2hRANCAAQtm2c/fR1u10Wu\n+F6snF+k8RA/6rdHKu0QIC4TBmDejz9Esm9rQ7q6c0scZq+TB3vuXlSC9fhw82hf\n85Xqf/fF\n-----END PRIVATE KEY-----\n";
private static String zhouhuanAddress1 = "zxf8dcce2b5374610631735ad4d606372ff199d89e";
private static String zhouhuanAddress2 = "zx26ff9db9cf1e981e3028b7e133d54b28eb859f97";
@Autowired
private ZxlWalletSdkUtil zxlWalletSdkUtil;
@Autowired
private ZxlnftConfig zxlnftConfig;
@Autowired
private ZxlnftSdkUtil zxlnftSdkUtil;
@Autowired
private ZxlnftBiz zxlnftBiz;
@Autowired
private GalaxyCommonBiz galaxyCommonBiz;
/**
* 1、生成助记词
*/
@Test
public void createMnemonic(){
CreateMnemonicReq req = CreateMnemonicReq.getNew();
zxlWalletSdkUtil.createMnemonic(req);
}
/**
* 2、API签名
*/
@Test
public void generateApiSign(){
GenerateApiSignReq req = GenerateApiSignReq.getNew();
req.setAppId("");
req.setAppKey("");
zxlWalletSdkUtil.generateApiSign(req);
}
/**
* 3、文件上传至COS
*/
@Test
public void uploadToCos(){
// String filePath = "/Users/anjiabin/Downloads/zxl_image_test_002.jpeg";
// String filePath = "/Users/anjiabin/Downloads/zxl_image_series_test_001.jpeg";
// String filePath = "/Users/anjiabin/Downloads/zxl_image_test_001.jpg";
// String filePath = "https://img.zhengzai.tv/other/2022/03/09/1f88d2bc6fea40e19430227326410cb3.jpg";
String filePath = "/Users/anjiabin/Downloads/春季花卉TEST001.mp4";
String seriesName = "NOW_ZXL_NFT_PIC001_skuId001_test";
// String fileName = "/"+ seriesName + "/" + DateUtil.getNowTime()+"/"+ IDGenerator.getZxlNftImageCosCode() +".jpg";
// String fileName = DateUtil.getNowTime(DateUtil.DATE_SMALL_STR)+"/"+ IDGenerator.getZxlNftImageCosCode() +".jpg";
String fileName = DateUtil.getNowTime(DateUtil.DATE_SMALL_STR)+"/"+ IDGenerator.getZxlNftImageCosCode() +".mp4";
System.out.println("fileName====="+fileName);
//调用生成素材上传临时密钥接口
Nft022UploadSecretReqDto nft022ReqDto = Nft022UploadSecretReqDto.getNew();
nft022ReqDto.setSeriesName(seriesName);
nft022ReqDto.setTimestamp(DateUtil.getNowSeconds().toString());
nft022ReqDto.setUserPubKey(zxlnftConfig.getNftPlatformPubKey());
//系列为空
String userData = nft022ReqDto.getTimestamp();
//系列不为空
if(StringUtil.isNotEmpty(nft022ReqDto.getSeriesName())){
userData = nft022ReqDto.getTimestamp() + "_" + nft022ReqDto.getSeriesName();
}
nft022ReqDto.setUserSignedData(zxlnftBiz.createSign(zxlnftConfig.getNftPlatformPriKey(),userData));
ZxlnftResponseDto<Nft022UploadSecretRespDto> nft022RespDto = zxlnftSdkUtil.nft022UploadSecret(nft022ReqDto);
if(nft022RespDto.isSuccess()){
UploadToCosReq req = UploadToCosReq.getNew();
req.setCosPath(nft022RespDto.getData().getUploadAddress().concat(fileName));
req.setTempSecretId(nft022RespDto.getData().getTempSecretId());
req.setTempSecretKey(nft022RespDto.getData().getTempSecretKey());
req.setSessionToken(nft022RespDto.getData().getSessionToken());
req.setFilePath(filePath);
UploadToCosResp resp = zxlWalletSdkUtil.uploadToCos(req);
System.out.println("返回结果:"+resp.toString());
}
}
/**
* 4、文件上传至COS(form-data文件提交)
*/
@Test
public void uploadFileToCos(){
UploadFileToCosReq req = UploadFileToCosReq.getNew();
// req.setCosPath("https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/zxl_image_test_001");
// req.setTempSecretId("AKIDhVGgR7gKaVE5qUIpSPD9k6pcmUj7fobmEspHDlCjC27Te6Dmputh-fI87qvL2EDT");
// req.setTempSecretKey("xuNqn+FfVjm0Ug0je9k1Mn5MQHKlWKs18uU03KIMAH0=");
// req.setSessionToken("fwJfhxx5ILXFYNItgiQid1bBiTrofX5af128eb2fa96eef4d9841c98756853142d0X-nPNtZgA0AEIwJ-MAJigzB3IZOgDjLorykjfoxAHusyQ_HeAhvHSlORtPol_iqqJVolGP78H5byiZKhKxATIZiJzrTCQysR02tR1vJPkJp03VH70sSzTJ3WcyTPpBs_NCuXkYvLZaDbRKmE8Xln4uqDJDSthNNaQKBJBYJNnxmVpCRCIeIyqOvQrSKXRGkvkjQ79Enlq7iUeKSqXrpKEBliAq9hgMrXPRHapqihseRl-WerjB4BgQ261mmOuZD6oHg37EPy_JrHAJxHh9dJlFlqz3CxUL-We36RcQeDpLvL1KuzZUBBmjSb0SYMvnun7SOEDdDMF0-1ApATsyQ-bTgDiCHAoo5Xqf9CcFKop-rUeQEDKSV17raeRRcN6ZcBQ-BJ5s4R4bqRm3y1nUwePNKD1Hi2__-nPUKuI5o535wkQcqMeDhQ40Fg3jCcPPRJ-9_Egp3yTEraTkfihKDAXTZnhiQdxaDInlP1JFJKZwY5b0hinlW6yaxnaUzYyXqTVY2tEufNOu5Sn4fGOTZmyqJJ0oDsCJiby-92vKqIS9fHIzemEXfuCULNdonmEThspBA7tUAUr-fY1KCjTMolhG0XvsJ-hNVzwNbpLMLd87TwajlyqJisnn5-sR-wuj9Hx9Inoe5kTRX-0F0NeP9vcfpYZns5No5jrBM74HMgOOSplXZ3yuML42LxTtw9SWcsxqFQJpohTyijpbrwdkKlwc0qGyUIPy7WQ7Jltb7iE");
// req.setName("/Users/anjiabin/Downloads/zxl_image_test_001.jpg");
// req.setFile("/Users/anjiabin/Downloads/zxl_image_test_001.jpg");
zxlWalletSdkUtil.uploadFileToCos(req);
}
/**
* 5、派生生成子公私钥对
*/
@Test
public void deriveKeyPair(){
DeriveKeyPairReq req = DeriveKeyPairReq.getNew();
// req.setPriKey(zxlnftConfig.getNftPlatformPriKey());
//stuff name goat health siren dumb gorilla antique board tenant buffalo present
req.setMnemonic("stuff name goat health siren dumb gorilla antique board tenant buffalo present");
req.setIndex(0l);
// req.setMnemonic("region");
// req.setIndex(0l);
//
// req.setMnemonic("use");
// req.setIndex(2l);
//3045022072ba19d02f43ae883764ffa43d111ab62fd0bcd6ace31bc91356e7ce38756cbb022100deb5f7666f4768f297ccdf386a867d2a0d71227548f2595a62130e5016fb1d54
DeriveKeyPairResp resp = zxlWalletSdkUtil.deriveKeyPair(req);
System.out.println(resp.toString());
}
/**
* 6、SDK签名
*/
@Test
public void signByPriKey(){
SignByPriKeyReq req = SignByPriKeyReq.getNew();
// req.setPriKey(zxlnftConfig.getNftPlatformPriKey());
req.setPriKey(zxlnftConfig.getNftPlatformPriKey());
req.setData("ZXa66c8a684727d0f9aaa434044362aa8a18b61bb4");
//3045022072ba19d02f43ae883764ffa43d111ab62fd0bcd6ace31bc91356e7ce38756cbb022100deb5f7666f4768f297ccdf386a867d2a0d71227548f2595a62130e5016fb1d54
zxlWalletSdkUtil.signByPriKey(req);
}
/**
* 7、私钥生成对应公钥
*/
@Test
public void priKey2PubKey(){
PriKey2PubKeyReq req = PriKey2PubKeyReq.getNew();
req.setPri(zhouhuanPriKey1);
zxlWalletSdkUtil.priKey2PubKey(req);
}
/**
* 8、公钥生成对应地址
*/
@Test
public void pubKey2Address(){
PubKey2AddressReq req = PubKey2AddressReq.getNew();
req.setPubKey(zxlnftConfig.getNftPlatformPubKey());
// req.setPubKey(zhouhuanPubKey1);
zxlWalletSdkUtil.pubKey2Address(req);
}
/**
* 9、私钥生成对应地址
*/
@Test
public void priKey2Address(){
PriKey2AddressReq req = PriKey2AddressReq.getNew();
req.setPriKey(zhouhuanPriKey1);
zxlWalletSdkUtil.priKey2Address(req);
}
/**
* 10、SDK验签
*/
@Test
public void verifyByPubKey(){
VerifyByPubKeyReq req = VerifyByPubKeyReq.getNew();
req.setPubKey(zxlnftConfig.getNftPlatformPubKey());
req.setData("ZXa66c8a684727d0f9aaa434044362aa8a18b61bb4");
req.setSignedData("3045022100f062e29953951317c6577ba5d7641d3f19c38930dbb8a93e7b9be699f3f208450220723b87ec6c1f4efd3f70b39b586b74bf52576c6ca8a8bb3d9ddd21255651dff8");
//3045022072ba19d02f43ae883764ffa43d111ab62fd0bcd6ace31bc91356e7ce38756cbb022100deb5f7666f4768f297ccdf386a867d2a0d71227548f2595a62130e5016fb1d54
zxlWalletSdkUtil.verifyByPubKey(req);
}
/**
* 11、SDK-SM3哈希 这个是44位,暂时不用
*/
@Test
public void sM3Hash(){
String cosUrl = "https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/ZXLNFTIMAGE202202241512003609141721.jpg";
cosUrl = "https://nft-user-1255940152.file.myqcloud.com/nft/5867f50e40075319f8bc0bdca59967414d1d9046a4d3c1aaf9bdd8199bb46e4a/0d2d845b56feee933c705786add60b5f12f2909ffcfa7a6b23e58d47a83918cf/%E7%82%AB%E8%BF%882022%E5%AD%A3%E8%8A%82%E7%8F%8D%E8%97%8F%E7%89%88%E6%96%B0%E4%B8%8A%E5%B8%82%E7%B3%BB%E5%88%97/nft_img_20220308_126193.png";
SM3HashReq req = SM3HashReq.getNew();
req.setData(cosUrl.getBytes(StandardCharsets.UTF_8));
SM3HashResp resp = zxlWalletSdkUtil.sM3Hash(req);
System.out.println(resp.toString());
}
/**
* 12、SDK-SM3哈希EnCode 这个是64位
*/
@Test
public void sM3HashEncode(){
String cosUrl = "https://nft-user-1255940152.file.myqcloud.com/nft/5867f50e40075319f8bc0bdca59967414d1d9046a4d3c1aaf9bdd8199bb46e4a/0d2d845b56feee933c705786add60b5f12f2909ffcfa7a6b23e58d47a83918cf/%E7%82%AB%E8%BF%882022%E5%AD%A3%E8%8A%82%E7%8F%8D%E8%97%8F%E7%89%88%E6%96%B0%E4%B8%8A%E5%B8%82%E7%B3%BB%E5%88%97/nft_img_20220308_126193.png";
// String cosUrl = "https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/ZXLNFTIMAGE202202241512003609141721.jpg";
// String cosUrl = "https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/ZXLNFTIMAGE202202241628485194860245.jpg";
// String cosUrl = "https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef//2022-02-24/ZXLNFTIMAGE202202241704292368452405.jpg";
cosUrl = "https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/ZXLNFTIMAGE202202241512003609141721.jpg";
SM3HashEncodeReq req = SM3HashEncodeReq.getNew();
req.setData(cosUrl.getBytes(StandardCharsets.UTF_8));
SM3HashEncodeResp resp = zxlWalletSdkUtil.sM3HashEncode(req);
System.out.println(resp.toString());
}
@Test
public void sM3HashEncode2(){
String cosUrl = "https://nft-user-1255940152.file.myqcloud.com/nft/5867f50e40075319f8bc0bdca59967414d1d9046a4d3c1aaf9bdd8199bb46e4a/0d2d845b56feee933c705786add60b5f12f2909ffcfa7a6b23e58d47a83918cf/%E7%82%AB%E8%BF%882022%E5%AD%A3%E8%8A%82%E7%8F%8D%E8%97%8F%E7%89%88%E6%96%B0%E4%B8%8A%E5%B8%82%E7%B3%BB%E5%88%97/nft_img_20220308_126193.png";
// String cosUrl = "https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/ZXLNFTIMAGE202202241512003609141721.jpg";
// String cosUrl = "https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/ZXLNFTIMAGE202202241628485194860245.jpg";
// String cosUrl = "https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef//2022-02-24/ZXLNFTIMAGE202202241704292368452405.jpg";
cosUrl = "https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/ZXLNFTIMAGE202202241512003609141721.jpg";
cosUrl = "https://nft-user-1255940152.file.myqcloud.com/nft/5867f50e40075319f8bc0bdca59967414d1d9046a4d3c1aaf9bdd8199bb46e4a/0d2d845b56feee933c705786add60b5f12f2909ffcfa7a6b23e58d47a83918cf/%E7%82%AB%E8%BF%882022%E5%AD%A3%E8%8A%82%E7%8F%8D%E8%97%8F%E7%89%88%E6%96%B0%E4%B8%8A%E5%B8%82%E7%B3%BB%E5%88%97/nft_img_20220308_124595.png";
cosUrl = "https://nft-user-1255940152.file.myqcloud.com/nft/5867f50e40075319f8bc0bdca59967414d1d9046a4d3c1aaf9bdd8199bb46e4a/0d2d845b56feee933c705786add60b5f12f2909ffcfa7a6b23e58d47a83918cf/%E7%82%AB%E8%BF%882022%E5%AD%A3%E8%8A%82%E7%8F%8D%E8%97%8F%E7%89%88%E6%96%B0%E4%B8%8A%E5%B8%82%E7%B3%BB%E5%88%97/nft_img_20220308_126193.png";
cosUrl = "https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/NOW_ZXL_NFT_PIC_skuId001/2022-03-04/ZXLNFTIMAGE202203041742464921866377.jpg";
//bingbingcangpin
cosUrl = "https://nft-user-1255940152.cos.ap-guangzhou.myqcloud.com/nft/3faf86686c80bf7a63700b11d9683ef90778f9162feb6b49265afecaedc68eba/%E3%80%8A%E5%A4%A9%E5%A0%82%E3%80%8B25%E5%91%A8%E5%B9%B4%E7%BA%AA%E5%BF%B5%E6%95%B0%E5%AD%97%E9%BB%91%E8%83%B6/%E3%80%8A%E5%A4%A9%E5%A0%82%E3%80%8B%E6%95%B0%E5%AD%97%E9%BB%91%E8%83%B6%E4%BA%8C%E6%AC%BE.mp4";
cosUrl = "https://nft-user-1255940152.cos.ap-guangzhou.myqcloud.com/nft/3faf86686c80bf7a63700b11d9683ef90778f9162feb6b49265afecaedc68eba/%E3%80%8A%E5%A4%A9%E5%A0%82%E3%80%8B25%E5%91%A8%E5%B9%B4%E7%BA%AA%E5%BF%B5%E6%95%B0%E5%AD%97%E9%BB%91%E8%83%B6/%E3%80%8A%E5%A4%A9%E5%A0%82%E3%80%8B%E6%95%B0%E5%AD%97%E9%BB%91%E8%83%B6%E4%BA%94%E6%AC%BE.mp4";
// cosUrl = "https://nft-user-1255940152.cos.ap-guangzhou.myqcloud.com/nft/3faf86686c80bf7a63700b11d9683ef90778f9162feb6b49265afecaedc68eba/%E3%80%8A%E5%A4%A9%E5%A0%82%E3%80%8B25%E5%91%A8%E5%B9%B4%E7%BA%AA%E5%BF%B5%E6%95%B0%E5%AD%97%E9%BB%91%E8%83%B6/%E3%80%8A%E5%A4%A9%E5%A0%82%E3%80%8B%E6%95%B0%E5%AD%97%E9%BB%91%E8%83%B6%E5%9B%9B%E6%AC%BE.mp4";
SM3HashEncodeReq req = SM3HashEncodeReq.getNew();
byte[] fileByteArray = zxlnftBiz.getNftFileByteArray(cosUrl);
req.setData(fileByteArray);
SM3HashEncodeResp resp = zxlWalletSdkUtil.sM3HashEncode(req);
System.out.println(resp.toString());
//eb383d5c4e5a81da3581f275bb8d8dc01910ac2f59e07e48c8e791bf124f59ca
//eb383d5c4e5a81da3581f275bb8d8dc01910ac2f59e07e48c8e791bf124f59ca
}
}
package com.liquidnet.service.galaxy;
import com.liquidnet.common.third.zxlnft.biz.ZxlnftBiz;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: TestZxlnftBiz
* @Package com.liquidnet.service.zxlnft.test
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2022/2/21 11:44
*/
@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class TestZxlnftBiz {
@Autowired
private ZxlnftBiz zxlnftBiz;
@Test
public void getImageType(){
String url = "https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/ZXLNFTIMAGE202202241512003609141721.jpg";
String imageType = url.substring(url.lastIndexOf("."),url.length());
System.out.println(imageType);
}
@Test
public void buildHeader(){
MultiValueMap<String, String> commonHeader = new LinkedMultiValueMap();
zxlnftBiz.buildHeader(commonHeader);
System.out.println(commonHeader.toString());
}
@Test
public void buildPlatFormHeader(){
MultiValueMap<String, String> commonHeader = new LinkedMultiValueMap();
zxlnftBiz.buildPlatFormHeader(commonHeader);
System.out.println(commonHeader.toString());
}
}
package com.liquidnet.service.galaxy;
import com.liquidnet.common.third.zxlnft.biz.ZxlnftBiz;
import com.liquidnet.common.third.zxlnft.config.ZxlnftConfig;
import com.liquidnet.common.third.zxlnft.constant.ZxlnftEnum;
import com.liquidnet.common.third.zxlnft.dto.*;
import com.liquidnet.common.third.zxlnft.util.ZxlWalletSdkUtil;
import com.liquidnet.common.third.zxlnft.util.ZxlnftSdkUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.commons.lang.util.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.io.File;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: TestZxlnftSdkUtil
* @Package com.liquidnet.common.third.zxlnft.test
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2022/2/18 13:49
*/
@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class TestZxlnftSdkUtil {
@Autowired
private ZxlWalletSdkUtil zxlWalletSdkUtil;
@Autowired
private ZxlnftSdkUtil zxlnftSdkUtil;
@Autowired
private ZxlnftConfig zxlnftConfig;
@Autowired
private ZxlnftBiz zxlnftBiz;
// private static String zhouhuanPubKey = "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAERAYCoqlcb1/C+b085HO4RWbIFx/n\nw6zkU3tvIYhBi1Xjj7GMdE/dR6D2fCQGWHqdYwQUb6/kS67Yjx47prxREg==\n-----END PUBLIC KEY-----\n";
// private static String zhouhuanPriKey = "-----BEGIN PRIVATE KEY-----\nMIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQgjSDapAU4gujWk9mM\nCE1tOokocdKrHMkfvZ0vfaWM+MOgCgYIKoEcz1UBgi2hRANCAAREBgKiqVxvX8L5\nvTzkc7hFZsgXH+fDrORTe28hiEGLVeOPsYx0T91HoPZ8JAZYep1jBBRvr+RLrtiP\nHjumvFES\n-----END PRIVATE KEY-----\n";
public static String zhouhuanPubKey1 = "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAERAYCoqlcb1/C+b085HO4RWbIFx/n\nw6zkU3tvIYhBi1Xjj7GMdE/dR6D2fCQGWHqdYwQUb6/kS67Yjx47prxREg==\n-----END PUBLIC KEY-----\n";
public static String zhouhuanPriKey1 = "-----BEGIN PRIVATE KEY-----\nMIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQgjSDapAU4gujWk9mM\nCE1tOokocdKrHMkfvZ0vfaWM+MOgCgYIKoEcz1UBgi2hRANCAAREBgKiqVxvX8L5\nvTzkc7hFZsgXH+fDrORTe28hiEGLVeOPsYx0T91HoPZ8JAZYep1jBBRvr+RLrtiP\nHjumvFES\n-----END PRIVATE KEY-----\n";
public static String zhouhuanPubKey2 = "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAELZtnP30dbtdFrvherJxfpPEQP+q3\nRyrtECAuEwZg3o8/RLJva0O6unNLHGavkwd77l5UgvX4cPNoX/OV6n/3xQ==\n-----END PUBLIC KEY-----\n";
public static String zhouhuanPriKey2 = "-----BEGIN PRIVATE KEY-----\nMIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQgNBYWsObyiuXLIZZZ\nPa0P/aNSrlf3//TLkdhZsDroRNugCgYIKoEcz1UBgi2hRANCAAQtm2c/fR1u10Wu\n+F6snF+k8RA/6rdHKu0QIC4TBmDejz9Esm9rQ7q6c0scZq+TB3vuXlSC9fhw82hf\n85Xqf/fF\n-----END PRIVATE KEY-----\n";
public static String zhouhuanAddress1 = "ZX12ff8e4796700cf194bae72749d5bd7179864644";
public static String zhouhuanAddress2 = "zx26ff9db9cf1e981e3028b7e133d54b28eb859f97";
public static String ID_CARD_1 = "142323198302062216";
public static String ID_CARD_2 = "150422199805206019";
@Test
public void nft001RegisterVerifyCode(){
Nft001RegisterVerifyCodeReqDto reqDto = Nft001RegisterVerifyCodeReqDto.getNew();
reqDto.setMobile("13811314082");
ZxlnftResponseDto<Nft001RegisterVerifyCodeRespDto> resp = zxlnftSdkUtil.nft001RegisterVerifyCode(reqDto);
System.out.println(resp.toJson());
}
@Test
public void nft002RegisterPerson(){
Nft002RegisterPersonReqDto reqDto = Nft002RegisterPersonReqDto.getNew();
reqDto.setPersonName("安家宾");
// reqDto.setEmail("");
reqDto.setMobile("13811314082");
reqDto.setVerifyCode("669340");
reqDto.setIdCard(ID_CARD_1);
reqDto.setCardType(Integer.valueOf(ZxlnftEnum.CardTypeEnum.ID_CARD.getCode()));
ZxlnftResponseDto<Nft002RegisterPersonRespDto> resp = zxlnftSdkUtil.nft002RegisterPerson(reqDto);
System.out.println(resp.toJson());
}
@Test
public void nft003RegisterPersonPlatform(){
Nft003RegisterPersonPlatformReqDto reqDto = Nft003RegisterPersonPlatformReqDto.getNew();
// userIdentification 68c8e0af922c450e35316977548971a1e5c335b1f5a4e21133257f0749b5c0a2
// 68c8e0af922c450e35316977548971a1e5c335b1f5a4e21133257f0749b5c0a2
// reqDto.setPersonName("安家宾");
//// reqDto.setEmail("");
// reqDto.setMobile("15711095580");
// reqDto.setIdCard(ID_CARD_1);
// reqDto.setPersonName("周焕");
//// reqDto.setEmail("");
// reqDto.setMobile("18548596019");
// reqDto.setIdCard("150422199805206019");
// 账号:17396921637
// 身份证号:510724199802164921
// 入场人信息+实名制信息:姓名由"刘娅"变更为"蔡筱娅"
// reqDto.setPersonName("蔡筱娅");
//// reqDto.setEmail("");
// reqDto.setMobile("17396921637");
// reqDto.setIdCard("510724199802164921");
reqDto.setPersonName("张国柄");
// reqDto.setEmail("");
reqDto.setMobile("13753596366");
reqDto.setIdCard("141181199209160192");
reqDto.setCardType(Integer.valueOf(ZxlnftEnum.CardTypeEnum.ID_CARD.getCode()));
ZxlnftResponseDto<Nft003RegisterPersonPlatformRespDto> resp = zxlnftSdkUtil.nft003RegisterPersonPlatform(reqDto);
System.out.println(resp.toJson());
}
@Test
public void nft004BusinessLicenseUpload(){
Nft004BusinessLicenseUploadReqDto reqDto = Nft004BusinessLicenseUploadReqDto.getNew();
reqDto.setFile(new File("/Users/anjiabin/Downloads/zxl_image_test_001.jpg"));
reqDto.setMobile("13811314082");
reqDto.setVerifyCode("123456");
ZxlnftResponseDto<Nft004BusinessLicenseUploadRespDto> resp = zxlnftSdkUtil.nft004BusinessLicenseUpload(reqDto);
System.out.println(resp.toJson());
}
@Test
public void nft005BusinessLicenseUploadPlatform(){
Nft005BusinessLicenseUploadPlatformReqDto reqDto = Nft005BusinessLicenseUploadPlatformReqDto.getNew();
reqDto.setFile(new File("/Users/anjiabin/Downloads/zxl_image_test_001.jpg"));
ZxlnftResponseDto<Nft005BusinessLicenseUploadPlatformRespDto> resp = zxlnftSdkUtil.nft005BusinessLicenseUploadPlatform(reqDto);
System.out.println(resp.toJson());
}
@Test
public void nft006OfficialLetterUpload(){
Nft006OfficialLetterUploadReqDto reqDto = Nft006OfficialLetterUploadReqDto.getNew();
reqDto.setFile(new File("/Users/anjiabin/Downloads/zxl_image_test_001.jpg"));
reqDto.setMobile("13811314082");
reqDto.setVerifyCode("123456");
ZxlnftResponseDto<Nft006OfficialLetterUploadRespDto> resp = zxlnftSdkUtil.nft006OfficialLetterUpload(reqDto);
System.out.println(resp.toJson());
}
@Test
public void nft007OfficialLetterUploadPlatform(){
Nft007OfficialLetterUploadPlatformReqDto reqDto = Nft007OfficialLetterUploadPlatformReqDto.getNew();
reqDto.setFile(new File("/Users/anjiabin/Downloads/zxl_image_test_001.jpg"));
ZxlnftResponseDto<Nft007OfficialLetterUploadPlatformRespDto> resp = zxlnftSdkUtil.nft007OfficialLetterUploadPlatform(reqDto);
System.out.println(resp.toJson());
}
@Test
public void nft008QueryImageModeration(){
String nftUrl = "https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/ZXLNFTIMAGE202202241512003609141721.jpg";
nftUrl = "https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/NOW_ZXL_video_test_001/ZXLNFTIMAGE202203191704225564978300.mp4";
Nft008QueryImageModerationReqDto reqDto = Nft008QueryImageModerationReqDto.getNew();
reqDto.setImageUrl(nftUrl);
reqDto.setIntrval(0);
reqDto.setMaxFrames(1);
ZxlnftResponseDto<Nft008QueryImageModerationRespDto> resp = zxlnftSdkUtil.nft008QueryImageModeration(reqDto);
System.out.println(resp.toJson());
}
@Test
public void nft009RegisterCompany(){
Nft009RegisterCompanyReqDto reqDto = Nft009RegisterCompanyReqDto.getNew();
reqDto.setEpName("企业名称");
// reqDto.setEmail();
reqDto.setVerifyCode("325588");
// reqDto.setCreditCode("91110101330367841P");
reqDto.setCreditCode("91110101330367841P");
reqDto.setBusiLicenseId(12222);
// reqDto.setOfficialLetterId();
reqDto.setRepresentativeName("沈总");
reqDto.setContact("安家宾");
reqDto.setMobile("13811314082");
reqDto.setIdcard(ID_CARD_1);
reqDto.setCardType(Integer.parseInt(ZxlnftEnum.CardTypeEnum.ID_CARD.getCode()));
// reqDto.setPlatformName();c
// reqDto.setPlatformUrl();
// reqDto.setBusinessType();
ZxlnftResponseDto<Nft009RegisterCompanyRespDto> resp = zxlnftSdkUtil.nft009RegisterCompany(reqDto);
System.out.println(resp.toJson());
}
@Test
public void nft010RegisterCompanyPlatform(){
Nft010RegisterCompanyPlatformReqDto reqDto = Nft010RegisterCompanyPlatformReqDto.getNew();
reqDto.setEpName("北京正在映画互联网科技有限公司");
// reqDto.setEmail();
reqDto.setCreditCode("91110101330367841P");
reqDto.setBusiLicenseId(12222);
// reqDto.setOfficialLetterId();
reqDto.setRepresentativeName("沈总");
reqDto.setContact("安家宾");
reqDto.setMobile("13811314082");
reqDto.setIdcard(ID_CARD_1);
reqDto.setCardType(Integer.parseInt(ZxlnftEnum.CardTypeEnum.ID_CARD.getCode()));
// reqDto.setPlatformName();c
// reqDto.setPlatformUrl();
// reqDto.setBusinessType();
ZxlnftResponseDto<Nft010RegisterCompanyPlatformRespDto> resp = zxlnftSdkUtil.nft010RegisterCompanyPlatform(reqDto);
System.out.println(resp.toJson());
}
@Test
public void nft011UserQueryVerifyCode_company(){
Nft011UserQueryVerifyCodeReqDto reqDto = Nft011UserQueryVerifyCodeReqDto.getNew();
//查询用户信息 发送手机验证码
reqDto.setType(Integer.valueOf(ZxlnftEnum.RegisterTypeEnum.COMPANY.getCode()));
reqDto.setCardNo(ID_CARD_1);
reqDto.setScene(Integer.valueOf(ZxlnftEnum.UseSceneEnum.QUERY.getCode()));
//nft平台绑定地址 发送邮箱验证码
// reqDto.setType(Integer.valueOf(ZxlnftEnum.RegisterTypeEnum.PERSON.getCode()));
// reqDto.setCardNo(ID_CARD_1);
// reqDto.setScene(Integer.valueOf(ZxlnftEnum.UseSceneEnum.BINDING.getCode()));
ZxlnftResponseDto<Nft011UserQueryVerifyCodeRespDto> resp = zxlnftSdkUtil.nft011UserQueryVerifyCode(reqDto);
System.out.println(resp.toJson());
}
@Test
public void nft011UserQueryVerifyCode_person(){
Nft011UserQueryVerifyCodeReqDto reqDto = Nft011UserQueryVerifyCodeReqDto.getNew();
//查询用户信息 发送手机验证码
reqDto.setType(Integer.valueOf(ZxlnftEnum.RegisterTypeEnum.PERSON.getCode()));
reqDto.setCardNo(ID_CARD_1);
reqDto.setScene(Integer.valueOf(ZxlnftEnum.UseSceneEnum.QUERY.getCode()));
//nft平台绑定地址 发送邮箱验证码
// reqDto.setType(Integer.valueOf(ZxlnftEnum.RegisterTypeEnum.PERSON.getCode()));
// reqDto.setCardNo(ID_CARD_1);
// reqDto.setScene(Integer.valueOf(ZxlnftEnum.UseSceneEnum.BINDING.getCode()));
ZxlnftResponseDto<Nft011UserQueryVerifyCodeRespDto> resp = zxlnftSdkUtil.nft011UserQueryVerifyCode(reqDto);
System.out.println(resp.toJson());
}
@Test
public void nft012UserQuery_person(){
//查询个人
Nft012UserQueryReqDto reqDto = Nft012UserQueryReqDto.getNew();
reqDto.setType(Integer.valueOf(ZxlnftEnum.RegisterTypeEnum.PERSON.getCode()));
reqDto.setCardNo(ID_CARD_1);
reqDto.setVerifyCode("997339");
ZxlnftResponseDto<Nft012UserQueryRespDto> resp = zxlnftSdkUtil.nft012UserQuery(reqDto);
System.out.println(resp.toJson());
//查询企业
// Nft012UserQueryReqDto reqDto = Nft012UserQueryReqDto.getNew();
// reqDto.setType(Integer.valueOf(ZxlnftEnum.RegisterTypeEnum.COMPANY.getCode()));
// reqDto.setCardNo(ID_CARD_1);
// reqDto.setVerifyCode("185026");
// ZxlnftResponseDto<Nft012UserQueryRespDto> resp = zxlnftSdkUtil.nft012UserQuery(reqDto);
// System.out.println(resp.toJson());
}
@Test
public void nft012UserQuery_company(){
//查询个人
Nft012UserQueryReqDto reqDto = Nft012UserQueryReqDto.getNew();
reqDto.setType(Integer.valueOf(ZxlnftEnum.RegisterTypeEnum.COMPANY.getCode()));
reqDto.setCardNo(ID_CARD_1);
reqDto.setVerifyCode("185026");
ZxlnftResponseDto<Nft012UserQueryRespDto> resp = zxlnftSdkUtil.nft012UserQuery(reqDto);
System.out.println(resp.toJson());
//查询企业
// Nft012UserQueryReqDto reqDto = Nft012UserQueryReqDto.getNew();
// reqDto.setType(Integer.valueOf(ZxlnftEnum.RegisterTypeEnum.COMPANY.getCode()));
// reqDto.setCardNo(ID_CARD_1);
// reqDto.setVerifyCode("185026");
// ZxlnftResponseDto<Nft012UserQueryRespDto> resp = zxlnftSdkUtil.nft012UserQuery(reqDto);
// System.out.println(resp.toJson());
}
@Test
public void nft013IdentityBindSubmit(){
Nft013IdentityBindSubmitReqDto reqDto = Nft013IdentityBindSubmitReqDto.getNew();
reqDto.setPubKey(zxlnftConfig.getNftPlatformPubKey());
reqDto.setUserIdentification("4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef");
reqDto.setSignData(zxlnftBiz.createSign(zxlnftConfig.getNftPlatformPriKey(),reqDto.getUserIdentification()));
reqDto.setFaceResultId("122");
ZxlnftResponseDto<Nft013IdentityBindSubmitRespDto> resp = zxlnftSdkUtil.nft013IdentityBindSubmit(reqDto);
System.out.println(resp.toJson());
}
@Test
public void nft014IdentityBindSubmitByTrusted(){
Nft014IdentityBindSubmitByTrustedReqDto reqDto = Nft014IdentityBindSubmitByTrustedReqDto.getNew();
//安家宾
reqDto.setUserPubKey(zxlnftConfig.getNftPlatformPubKey());
reqDto.setUserIdentification("4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef");
String signature = zxlnftBiz.createSign(zxlnftConfig.getNftPlatformPriKey(),reqDto.getUserIdentification());
//周焕
// reqDto.setUserPubKey(zhouhuanPubKey1);
// reqDto.setUserIdentification("0354415fabf861ecde70db198836bf82af025820ea50f66c05589e21b6d9700f");
// signature = zxlnftBiz.createSign(zhouhuanPriKey1,reqDto.getUserIdentification());
reqDto.setUserPubKey(zxlnftConfig.getNftPlatformPubKey());
reqDto.setUserIdentification("68c8e0af922c450e35316977548971a1e5c335b1f5a4e21133257f0749b5c0a2");
signature = zxlnftBiz.createSign(zxlnftConfig.getNftPlatformPriKey(),reqDto.getUserIdentification());
reqDto.setUserSignData(signature);
ZxlnftResponseDto<Nft014IdentityBindSubmitByTrustedRespDto> resp = zxlnftSdkUtil.nft014IdentityBindSubmitByTrusted(reqDto);
System.out.println(resp.toJson());
}
@Test
public void nft015IdentityBindPlatformSelf(){
Nft015IdentityBindPlatformSelfReqDto reqDto = Nft015IdentityBindPlatformSelfReqDto.getNew();
reqDto.setPubKey(zxlnftConfig.getNftPlatformPubKey());
reqDto.setUserIdentification("4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef");
reqDto.setVerifyCode("061628");
String signature = zxlnftBiz.createSign(zxlnftConfig.getNftPlatformPriKey(),reqDto.getUserIdentification());
reqDto.setSignData(signature);
ZxlnftResponseDto<Nft015IdentityBindPlatformSelfRespDto> resp = zxlnftSdkUtil.nft015IdentityBindPlatformSelf(reqDto);
System.out.println(resp.toJson());
}
@Test
public void nft016IdentityBindQuery(){
Nft016IdentityBindQueryReqDto reqDto = Nft016IdentityBindQueryReqDto.getNew();
// reqDto.setAddressList("ZXa66c8a684727d0f9aaa434044362aa8a18b61bb4");
// reqDto.setAddressList("ZXfa63b4ff148dbebb6ed9c185a5f7f8b8fdcf90ad");
reqDto.setAddressList("ZX8c695824fd8348f5311c727d914f5d7dcaeed204");
ZxlnftResponseDto<Nft016IdentityBindQueryRespDto> resp = zxlnftSdkUtil.nft016IdentityBindQuery(reqDto);
System.out.println(resp.toJson());
}
@Test
public void nft017IdentityVerifyIdentity(){
Nft017IdentityVerifyIdentityReqDto reqDto = Nft017IdentityVerifyIdentityReqDto.getNew();
reqDto.setAddress("ZXa66c8a684727d0f9aaa434044362aa8a18b61bb4");
reqDto.setAddress("ZXa66c8a684727d0f9aaa434044362aa8a18b61bb4");
reqDto.setFaceResultId("111");
ZxlnftResponseDto<Nft017IdentityVerifyIdentityRespDto> resp = zxlnftSdkUtil.nft017IdentityVerifyIdentity(reqDto);
System.out.println(resp.toJson());
}
/**
* 18 请求人脸核身h5url api/v1/nft/face/url
* 19 通过用户地址请求人脸核身h5url api/v1/nft/face/url_by_address
* 20 人身核对结果查询接口 api/v1/nft/face/query
*/
@Test
public void nft021UploadUrl(){
Nft021UploadUrlReqDto reqDto = Nft021UploadUrlReqDto.getNew();
// reqDto.setSeriesName("NOW_ZXL_NFT_PIC001_test_skuId001");
reqDto.setSeriesName("SERIES_STORE_NAME");
reqDto.setPlatformIdentification(zxlnftConfig.getPlatformIdentification());
// reqDto.setUserIdentification(zxlnftConfig.getPlatformIdentification()); //暂时素材上传人和平台管理员是同一个人
ZxlnftResponseDto<Nft021UploadUrlRespDto> resp = zxlnftSdkUtil.nft021UploadUrl(reqDto);
System.out.println(resp.toJson());
// {
// "code": "0",
// "data": {
// "materialAddress": "https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/NOW_ZXL_NFT_PIC001_test_skuId001/"
// },
// "success": true
// }
}
@Test
public void nft022UploadSecret(){
for(int i=0;i<10;i++){
System.out.println("=============执行第"+(i+1)+"个===================================");
Nft022UploadSecretReqDto reqDto = Nft022UploadSecretReqDto.getNew();
reqDto.setSeriesName("NOW_ZXL_NFT_PIC001_test_skuId001"+i);
System.out.println("timestamp=="+DateUtil.getNowSeconds().toString());
reqDto.setTimestamp(DateUtil.getNowSeconds().toString()+"123456"+i);
System.out.println("timestamp=="+reqDto.getTimestamp());
reqDto.setUserPubKey(zxlnftConfig.getNftPlatformPubKey());
// try {
// Thread.sleep(2000l);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
//系列为空
String userData = reqDto.getTimestamp();
//系列不为空
if(StringUtil.isNotEmpty(reqDto.getSeriesName())){
userData = reqDto.getTimestamp() + "_" + reqDto.getSeriesName();
}
reqDto.setUserSignedData(zxlnftBiz.createSign(zxlnftConfig.getNftPlatformPriKey(),userData));
ZxlnftResponseDto<Nft022UploadSecretRespDto> resp = zxlnftSdkUtil.nft022UploadSecret(reqDto);
System.out.println(resp.toJson());
}
//为什了发行人和平台是同一个人时,uploadAddres会少一级目录 少了个人目录,是自动省略了吗?
// {
// "code": "0",
// "data": {
// "tempSecretId": "AKIDhhEkTGgB37L_rc-Wy6sfqvz70a1AspdRh11oawassCa6Rg2SZ-V7Z-x66cGtRpOO",
// "tempSecretKey": "2KZKWE/BfzgbHoCYTTihLJW2QyVm4Bz48gsD1uPLvJg=",
// "sessionToken": "kgtsbjIKkVgYlIEGTZRJ1NJ3UhadM7Ea1eff3b33758e079d44b6fe4fd1f60e47ug5Dj85tZJxxa9efvA0xBWj6fZWagnsEzf25ZSGsEJrjjEY8ydKuIQrUuIjW9ifGHC1BYQ9kChXrSyXxHKO9O2RD4qDa-g3ljhBAbChtFyMCLxZKCG9OKpmB3yyRnF9mb-D5CHTDhO7ubUap_tIldEyqkWxmvfrvHgF0ndnhRt_I444-YQxnroHEnEk4gcBkRdDTeI_9JhVhQy3LZoBflfW1h0ZOHk2O1U7JrnsS7t5hOdjfXIul142mimp2YsDifJc8j2U5uAlml37iNqZ1OFsvxVcbPSI8dWCOiZvRk3ndN9EDEXDZjgrr-1nC3j1ZdXXE5ii1DCWbfmvhWFBbJit6PGqO7M-95Zuw-6VkzX5vwNaYMqtcU_a7u3brFu1DihZHxcjt3O6avzjaU_su6t_98G0DzL_CjvR_fLFKCpI3f3OhGC8jFm6D10cGYadwW7uQ10waXgMs11xjsgiC-By2K4G5xNa36t11wuXxISzJg5-v_eLCXQue8YXwZJNN2e49CdK2trGEwtB8z0Ok6HnlXK68fSCk0PDcmo1MhP18kCDC3Cm_LgbOQGExpuTDPc_HKlUZn9xBVJWqqiySE05aFSs8nr6WLlce5lzFbhIY_yJLMprZNNg8azBK_bgiyEJWavf3Kt8KRAo0YEMs8R0Cuma5YLsCzzCN6vBkW_hWfqZceT_BAcrP3p_-4IPtj7LtbfbhrhnfcUtfC2BoJiBIQXFPita4QrKwpkKVW5SyDw6O2zh0Iam7DjdXlKFrdH8nJef3oRYEqLsS_MOMU29kNRIxLfcrsXw_jTQ1Bjs",
// "uploadAddress": "https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/NOW_ZXL_NFT_PIC001_test_skuId001/"
// },
// "success": true
// }
}
@Test
public void nft023PointApply(){
Nft023PointApplyReqDto reqDto = Nft023PointApplyReqDto.getNew();
//安家宾
// reqDto.setApplyerAddr("ZXa66c8a684727d0f9aaa434044362aa8a18b61bb4");
//周焕1
// reqDto.setApplyerAddr("ZXf8dcce2b5374610631735ad4d606372ff199d89e");
//周焕2
reqDto.setApplyerAddr("ZX26ff9db9cf1e981e3028b7e133d54b28eb859f97");
reqDto.setCount(200l);
reqDto.setOperateId(IDGenerator.get32UUID());
ZxlnftResponseDto<Nft023PointApplyRespDto> resp = zxlnftSdkUtil.nft023PointApply(reqDto);
System.out.println(resp.toJson());
}
/**
* 查询失败
*/
@Test
public void nft024PointApplyResult(){
Nft024PointApplyResultReqDto reqDto = Nft024PointApplyResultReqDto.getNew();
reqDto.setTaskId("337fe5cc-d509-418f-867f-378ca351e4ba_apply-point_1");
reqDto.setTaskId("01e01f1c-93c8-4bb0-b0f5-1ff064c210dc_apply-point_1");
reqDto.setTaskId("d1de1627-fcc6-46a2-8540-e4bd17ac1a02_apply-point_1");
reqDto.setTaskId("a09a628e-13c5-4183-a528-3bf9b3123fb7_apply-point_1");
ZxlnftResponseDto<Nft024PointApplyResultRespDto> resp = zxlnftSdkUtil.nft024PointApplyResult(reqDto);
System.out.println(resp.toJson());
}
/**
* 25 平台积分转移 api/v1/nft/point/transfer
* 26 平台积分转移状态查询 api/v1/nft/point/transfer/result
* 27 积分销毁 api/v1/nft/point/destroy
* 28 查询积分销毁结果 api/v1/nft/point/destory/resul
*/
@Test
public void nft029PointQuery(){
Nft029PointQueryReqDto reqDto = Nft029PointQueryReqDto.getNew();
reqDto.setAddr(zxlnftConfig.getNftPlatformAddress());
//周焕1
// reqDto.setAddr(zhouhuanAddress1);
//周焕2
// reqDto.setAddr(zhouhuanAddress2);
ZxlnftResponseDto<Nft029PointQueryRespDto> resp = zxlnftSdkUtil.nft029PointQuery(reqDto);
System.out.println(resp.toJson());
}
//30 NFT 系列声明 api/v1/nft/series/claim
//31 查询NFT系列声明结果 api/v1/nft/series/claim/result
//32 查询系列信息 api/v1/nft/series
//33 查询该账户资产归属的系列列表 api/v1/nft/series/list
@Test
public void nft030SeriesClaim(){
// Nft030SeriesClaimReqDto reqDto = Nft030SeriesClaimReqDto.getNew();
// reqDto.setPubKey(zxlnftConfig.getNftPlatformPubKey());
// reqDto.setSeriesName("北京草莓音乐节2022主题模型-系列002");
// reqDto.setTotalCount(10l);
// reqDto.setOperateId(IDGenerator.get32UUID());
// reqDto.setCoverUrl("https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/ZXLNFTIMAGE202202241512003609141721.jpg");
// reqDto.setDesc("系列描述信息不超过500字符");
// reqDto.setMaxPublishCount(0);
// reqDto.setSeriesBeginFromZero(false);
//无限制系列
Nft030SeriesClaimReqDto reqDto = Nft030SeriesClaimReqDto.getNew();
reqDto.setPubKey(zxlnftConfig.getNftPlatformPubKey());
reqDto.setSeriesName("北京草莓音乐节2022主题模型-系列000");
reqDto.setTotalCount(0l);
reqDto.setOperateId(IDGenerator.get32UUID());
reqDto.setCoverUrl("https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/ZXLNFTIMAGE202202241512003609141721.jpg");
reqDto.setDesc("系列描述信息不超过500字符");
reqDto.setMaxPublishCount(0);
reqDto.setSeriesBeginFromZero(false);
ZxlnftResponseDto<Nft030SeriesClaimRespDto> resp = zxlnftSdkUtil.nft030SeriesClaim(reqDto);
System.out.println(resp.toJson());
}
@Test
public void nft031SeriesClaimResult(){
Nft031SeriesClaimResultReqDto reqDto = Nft031SeriesClaimResultReqDto.getNew();
//第零个系列 无限制系列
reqDto.setTaskId("e1788c18-f72b-4dc3-8394-1c5f90d8aea6_nft-series-claim_1");
reqDto.setTaskId("dc284b01-6110-463a-ac60-8d505f3182d6_nft-series-claim_1");
reqDto.setTaskId("49d1cccc-e62c-40bc-923c-bfac31325351_nft-series-claim_1");
reqDto.setTaskId("959842b9-42cf-447a-9fa4-5798ea37bf67_nft-series-claim_1");
reqDto.setTaskId("de2e6fcc-58db-47fb-8577-c41eb4beacc6_nft-series-claim_1");
reqDto.setTaskId("965b5331-f839-4e38-bd62-a62595b39851_nft-series-claim_1"); // 正常
reqDto.setTaskId("3c74d453-16fd-4879-a862-e307c1c33564_nft-series-claim_1"); // 失败
// reqDto.setTaskId("b42dbe4c-da91-4644-9f20-7dbfb8f8d41d_nft-series-claim_1");
//第一个系列 北京草莓音乐节2022主题模型-系列001
// reqDto.setTaskId("dc92bbd6-eb95-4452-99f8-0726001367be_nft-series-claim_1");
//第二个系列 北京草莓音乐节2022主题模型-系列002
// reqDto.setTaskId("0d951a6b-0697-4ede-83f2-e31485f380ce_nft-series-claim_1");
ZxlnftResponseDto<Nft031SeriesClaimResultRespDto> resp = zxlnftSdkUtil.nft031SeriesClaimResult(reqDto);
System.out.println(resp.toJson());
}
@Test
public void nft032Series(){
Nft032SeriesReqDto reqDto = Nft032SeriesReqDto.getNew();
//无限制系列 NOW_ZXL_NFT_PIC_skuId001
// reqDto.setSeriesId("4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef_8a827e181b695fb8d9b081d3855d2895ced1d003ee186622a005cec37ea77e59");
//无限制系列 NOW_ZXL_NFT_PIC_skuId002
// reqDto.setSeriesId("4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef_b9b105d186742e44691c540bbacddd1c3a883a49d899b81c5b1a5cf10b4ad4e6");
//第一个系列
// reqDto.setSeriesId("4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef_ca49b5ebadd5f73ab057fe869bf897cbcc0f31e0b89db71cc3ec78bca2d16ed6");
//第二个系列
// reqDto.setSeriesId("4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef_31ff9f7d4c33c98518e095fec6cecdab8d337751602cf6e651eb7d131cff5b61");
//新的 NOW_ZXL_1234567890-002
// reqDto.setSeriesId("4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef_eaf0b265e4717529edb5130e7e8f997d6664a8c81c3b2388fa2b8c6af9b6fdc0");
reqDto.setSeriesId("4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef_224c288ded71e9a75190f018eb7e5382119c2d7a2216aaa4dbd7e602b82e247e");
ZxlnftResponseDto<Nft032SeriesRespDto> resp = zxlnftSdkUtil.nft032Series(reqDto);
System.out.println(resp.toJson());
// {
// "code": "0",
// "data": {
// "seriesInfo": {
// "seriesId": "4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef_8a827e181b695fb8d9b081d3855d2895ced1d003ee186622a005cec37ea77e59",
// "name": "北京草莓音乐节2022主题模型-系列000",
// "creatorAddr": "zxa66c8a684727d0f9aaa434044362aa8a18b61bb4",
// "totalCount": "0",
// "crtCount": "14",
// "coverUrl": "https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/ZXLNFTIMAGE202202241512003609141721.jpg",
// "desc": "系列描述信息不超过500字符",
// "createTimeStamp": "1646237545"
// }
// },
// "success": true
// }
}
/**
* ERROR
* 该接口没有调试通
*/
@Test
public void nft033SeriesList(){
Nft033SeriesListReqDto reqDto = Nft033SeriesListReqDto.getNew();
reqDto.setAddr("zxa66c8a684727d0f9aaa434044362aa8a18b61bb4");
// reqDto.setAddr(zhouhuanAddress1);
ZxlnftResponseDto<Nft033SeriesListRespDto> resp = zxlnftSdkUtil.nft033SeriesList(reqDto);
System.out.println(resp.toJson());
}
@Test
public void nft034Publish(){
// Nft034PublishReqDto reqDto = Nft034PublishReqDto.getNew();
// reqDto.setAuthor("正在现场创作者001");
// reqDto.setName("北京2022草莓音乐节2022");
// reqDto.setUrl("https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/ZXLNFTIMAGE202202241512003609141721.jpg");
// reqDto.setDisplayUrl("https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/ZXLNFTIMAGE202202241512003609141721.jpg");
// reqDto.setDesc("NFT描述信息");
// reqDto.setFlag("文创");
// reqDto.setPublishCount(1l);
//// reqDto.setSeriesId("");
// reqDto.setSeriesBeginIndex(1);
// reqDto.setSellStatus(Integer.parseInt(ZxlnftEnum.SellStatusEnum.CAN_SELL.getCode()));
// reqDto.setSellCount(1000l);
// reqDto.setOperateId(IDGenerator.get32UUID());
// reqDto.setMetaData("");
/**
* 发行无限制系列
*/
Nft034PublishReqDto reqDto = Nft034PublishReqDto.getNew();
reqDto.setAuthor("正在现场创作者001");
reqDto.setName("上海草莓音乐节2022");
reqDto.setUrl("https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/ZXLNFTIMAGE202202241512003609141721.jpg");
reqDto.setDisplayUrl("https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/ZXLNFTIMAGE202202241512003609141721.jpg");
reqDto.setDesc("NFT描述信息");
reqDto.setFlag("文创");
reqDto.setPublishCount(1l);
//无限制零系列
// reqDto.setSeriesId("4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef_8a827e181b695fb8d9b081d3855d2895ced1d003ee186622a005cec37ea77e59");
// //系列001
reqDto.setSeriesId("4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef_ca49b5ebadd5f73ab057fe869bf897cbcc0f31e0b89db71cc3ec78bca2d16ed6");
// //系列002
// reqDto.setSeriesId("4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef_31ff9f7d4c33c98518e095fec6cecdab8d337751602cf6e651eb7d131cff5b61");
reqDto.setSeriesBeginIndex(8);
reqDto.setSellStatus(Integer.parseInt(ZxlnftEnum.SellStatusEnum.CAN_SELL.getCode()));
reqDto.setSellCount(1000l);
reqDto.setOperateId(IDGenerator.get32UUID());
reqDto.setMetaData("");
ZxlnftResponseDto<Nft034PublishRespDto> resp = zxlnftSdkUtil.nft034Publish(reqDto);
System.out.println(resp.toJson());
}
/**
* NFT发行
*/
@Test
public void nft035PublishResult(){
Nft035PublishResultReqDto reqDto = Nft035PublishResultReqDto.getNew();
// reqDto.setTaskId("5d23ed47-dcb2-4672-99eb-060c04727a20_nft-publish_3");
// reqDto.setTaskId("15ba80bb-a5f9-41db-b708-20bf4df34c14_nft-publish_3");
// reqDto.setTaskId("1b8b94c0-e9d1-4885-97a5-ae1b82302e17_nft-publish_3");
// //无限制系列发行 1
// reqDto.setTaskId("5a53f3ea-64a5-45a2-828b-196887990696_nft-publish_3");
// //无限制系列发行 2
// reqDto.setTaskId("f87f687f-0b3c-46fa-b23b-d1bbf6c2594f_nft-publish_3");
// //北京草莓无限制系列发行 4
// reqDto.setTaskId("ee26ee9c-7005-48ca-bbc0-3e367c641dce_nft-publish_3");
// //上海草莓无限制系列发行 4 发行失败 已经存在
// reqDto.setTaskId("76087122-b417-49ce-bed6-54a106375293_nft-publish_3");
// //上海草莓无限制系列发行 5
// reqDto.setTaskId("4d208028-36af-463b-b8ce-d1ca784df7b7_nft-publish_3");
// //上海草莓无限制系列发行 6 共5个
// reqDto.setTaskId("7bb78a44-aebe-460e-9624-7914cfc6854b_nft-publish_3");
// //上海草莓无限制系列发行 11 共5个
// reqDto.setTaskId("eee6ca98-e497-43bd-969d-cdc599d0f2bd_nft-publish_3");
// //系列001 发行ID1 共5个
// reqDto.setTaskId("45ebcf2a-5d71-44fc-a7f3-f88f3c92cfe6_nft-publish_3");
// //系列001 发行ID6 共6个
// reqDto.setTaskId("2f1eae08-6b52-42ff-ac69-78cca7bf6913_nft-publish_3");
// reqDto.setTaskId("4efaab86-deb3-436f-9aca-de59033ec79c_nft-publish_3");
// reqDto.setTaskId("878dddd8-0e10-4e0b-99d0-0f2221ea3a48_nft-publish_3");
ZxlnftResponseDto<Nft035PublishResultRespDto> resp = zxlnftSdkUtil.nft035PublishResult(reqDto);
System.out.println(resp.toJson());
}
/**
* NFT发行
*/
@Test
public void nft036Info(){
Nft036InfoReqDto reqDto = Nft036InfoReqDto.getNew();
reqDto.setNftId("33010f3ad19e1295d2b13f38b60b4fc3286feb5f5f5289e909f77d02c40942d1_2");
reqDto.setNftId("33010f3ad19e1295d2b13f38b60b4fc3286feb5f5f5289e909f77d02c40942d1_1");
ZxlnftResponseDto<Nft036InfoRespDto> resp = zxlnftSdkUtil.nft036Info(reqDto);
System.out.println(resp.toJson());
}
/**
* 37 查询账户NFT列表
*/
@Test
public void nft037AddressList(){
Nft037AddressListReqDto reqDto = Nft037AddressListReqDto.getNew();
// reqDto.setAddr(zxlnftConfig.getNftPlatformAddress());
reqDto.setAddr(zhouhuanAddress1);
//无限制系列
// reqDto.setSeriesId("4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef_8a827e181b695fb8d9b081d3855d2895ced1d003ee186622a005cec37ea77e59");
//系列001
// reqDto.setSeriesId("4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef_ca49b5ebadd5f73ab057fe869bf897cbcc0f31e0b89db71cc3ec78bca2d16ed6");
//系列002
// reqDto.setSeriesId("4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef_31ff9f7d4c33c98518e095fec6cecdab8d337751602cf6e651eb7d131cff5b61");
reqDto.setSeriesId("4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef_224c288ded71e9a75190f018eb7e5382119c2d7a2216aaa4dbd7e602b82e247e");
// reqDto.setOffset(0l);
reqDto.setLimit(1000l);
ZxlnftResponseDto<Nft037AddressListRespDto> resp = zxlnftSdkUtil.nft037AddressList(reqDto);
System.out.println(resp.toJson());
}
/**
* 查询无系列NFT列表
*/
@Test
public void nft038AddressWithoutSeriesList(){
Nft038AddressWithoutSeriesListReqDto reqDto = Nft038AddressWithoutSeriesListReqDto.getNew();
// reqDto.setAddr(zxlnftConfig.getNftPlatformAddress());
reqDto.setAddr(zhouhuanAddress1);
// reqDto.setOffset(0l);
reqDto.setLimit(1000l);
ZxlnftResponseDto<Nft038AddressWithoutSeriesListRespDto> resp = zxlnftSdkUtil.nft038AddressWithoutSeriesList(reqDto);
System.out.println(resp.toJson());
}
/**
* 查询单个NFT交易信息列表
*/
@Test
public void nft039TradeList(){
Nft039TradeListReqDto reqDto = Nft039TradeListReqDto.getNew();
reqDto.setNftId("33010f3ad19e1295d2b13f38b60b4fc3286feb5f5f5289e909f77d02c40942d1_2");
// reqDto.setNftId("33010f3ad19e1295d2b13f38b60b4fc3286feb5f5f5289e909f77d02c40942d1_1");
// reqDto.setOffset(0l);
reqDto.setLimit(1000l);
ZxlnftResponseDto<Nft039TradeListRespDto> resp = zxlnftSdkUtil.nft039TradeList(reqDto);
System.out.println(resp.toJson());
}
/**
* 查询转入NFT交易信息列表
*/
@Test
public void nft040TradeInList(){
Nft040TradeInListReqDto reqDto = Nft040TradeInListReqDto.getNew();
reqDto.setAddr(zxlnftConfig.getNftPlatformAddress());
// reqDto.setAddr(zhouhuanAddress1);
// reqDto.setOffset(0l);
reqDto.setLimit(1000l);
ZxlnftResponseDto<Nft040TradeInListRespDto> resp = zxlnftSdkUtil.nft040TradeInList(reqDto);
System.out.println(resp.toJson());
}
/**
* 查询转出NFT交易信息列表
*/
@Test
public void nft041TradeOutList(){
Nft041TradeOutListReqDto reqDto = Nft041TradeOutListReqDto.getNew();
reqDto.setAddr(zxlnftConfig.getNftPlatformAddress());
// reqDto.setAddr(zhouhuanAddress2);
// reqDto.setOffset(0l);
reqDto.setLimit(1000l);
ZxlnftResponseDto<Nft041TradeOutListRespDto> resp = zxlnftSdkUtil.nft041TradeOutList(reqDto);
System.out.println(resp.toJson());
}
/**
* 通过地址查询全部NFT交易信息列表
*/
@Test
public void nft042TradeAllList(){
Nft042TradeAllListReqDto reqDto = Nft042TradeAllListReqDto.getNew();
// reqDto.setAddr(zxlnftConfig.getNftPlatformAddress());
reqDto.setAddr(zhouhuanAddress1);
// reqDto.setAddr(zhouhuanAddress1);
// reqDto.setOffset(0l);
reqDto.setLimit(1000l);
ZxlnftResponseDto<Nft042TradeAllListRespDto> resp = zxlnftSdkUtil.nft042TradeAllList(reqDto);
System.out.println(resp.toJson());
}
@Test
public void nft043Buy(){
Nft043BuyReqDto reqDto = Nft043BuyReqDto.getNew();
// reqDto.setNftId("7f73aca56caaf57a20f0afff59318528f0f09ffbf028fe882161d3ce599d2854_1");
reqDto.setNftId("08c152e5fa467d28b7add8e408fb3ecd1ed2ff209364adc1e394bde53929df8f_1");
reqDto.setApplyScore(1000);
reqDto.setReceiverPubKey(zhouhuanPubKey1);
reqDto.setPointReceiverAddr(zhouhuanAddress1);
reqDto.setOfferCount(1000l);
reqDto.setOperateId(IDGenerator.get32UUID());
/**
* 接收人的私钥签名,签名对象是(platformPubKey_receiverPubKey_pointReceiverAddr_applyScore_接口名_nftId_offerCount_operateId)
* 接口名:buy_nft
*/
String signMetaData = zxlnftConfig.getNftPlatformPubKey()
.concat("_").concat(reqDto.getReceiverPubKey())
.concat("_").concat(reqDto.getPointReceiverAddr())
.concat("_").concat(reqDto.getApplyScore().toString())
.concat("_").concat("buy_nft")
.concat("_").concat(reqDto.getNftId())
.concat("_").concat(reqDto.getOfferCount().toString())
.concat("_").concat(reqDto.getOperateId());
String signature = zxlnftBiz.createSign(zhouhuanPriKey1,signMetaData);
reqDto.setSignature(signature);
ZxlnftResponseDto<Nft043BuyRespDto> resp = zxlnftSdkUtil.nft043Buy(reqDto);
System.out.println(resp.toJson());
}
/**
* NFT发行
*/
@Test
public void nft044BuyResult(){
Nft044BuyResultReqDto reqDto = Nft044BuyResultReqDto.getNew();
reqDto.setTaskId("035137e8-f1ac-4784-a2e4-2a830878bb47_buy-nft_2");
reqDto.setTaskId("e9a1f1f4-76ba-4469-8c51-ab3306954040_buy-nft_2");
ZxlnftResponseDto<Nft044BuyResultRespDto> resp = zxlnftSdkUtil.nft044BuyResult(reqDto);
System.out.println(resp.toJson());
}
/**
* NFT发行
*/
@Test
public void nft045BuyPayResult(){
Nft045BuyPayResultReqDto reqDto = Nft045BuyPayResultReqDto.getNew();
reqDto.setTaskId("8b7f328e-5a63-42f2-ad73-177d5157c4de_buy-nft-pay_1");
reqDto.setTaskId("7ffc93e9-ca15-4075-a894-b5e534fecd01_buy-nft-pay_1");
ZxlnftResponseDto<Nft045BuyPayResultRespDto> resp = zxlnftSdkUtil.nft045BuyPayResult(reqDto);
System.out.println(resp.toJson());
}
/**
* 46 NFT转移
*/
@Test
public void nft046Transfer(){
Nft046TransferReqDto reqDto = Nft046TransferReqDto.getNew();
reqDto.setPubKey("8b7f328e-5a63-42f2-ad73-177d5157c4de_buy-nft-pay_1");
reqDto.setReceiverAddr("8b7f328e-5a63-42f2-ad73-177d5157c4de_buy-nft-pay_1");
reqDto.setNftId("8b7f328e-5a63-42f2-ad73-177d5157c4de_buy-nft-pay_1");
reqDto.setOperateId("8b7f328e-5a63-42f2-ad73-177d5157c4de_buy-nft-pay_1");
reqDto.setSignature("8b7f328e-5a63-42f2-ad73-177d5157c4de_buy-nft-pay_1");
ZxlnftResponseDto<Nft046TransferRespDto> resp = zxlnftSdkUtil.nft046Transfer(reqDto);
System.out.println(resp.toJson());
}
/**
* 47 NFT同名转移
*/
@Test
public void nft047SelfTransfer(){
Nft047SelfTransferReqDto reqDto = Nft047SelfTransferReqDto.getNew();
reqDto.setPubKey("8b7f328e-5a63-42f2-ad73-177d5157c4de_buy-nft-pay_1");
reqDto.setReceiverAddr("8b7f328e-5a63-42f2-ad73-177d5157c4de_buy-nft-pay_1");
reqDto.setNftId("8b7f328e-5a63-42f2-ad73-177d5157c4de_buy-nft-pay_1");
reqDto.setOperateId("8b7f328e-5a63-42f2-ad73-177d5157c4de_buy-nft-pay_1");
reqDto.setSignature("8b7f328e-5a63-42f2-ad73-177d5157c4de_buy-nft-pay_1");
ZxlnftResponseDto<Nft047SelfTransferRespDto> resp = zxlnftSdkUtil.nft047SelfTransfer(reqDto);
System.out.println(resp.toJson());
}
/**
* 48 NFT批量转移
*/
@Test
public void nft048BatchTransfer(){
Nft048BatchTransferReqDto reqDto = Nft048BatchTransferReqDto.getNew();
reqDto.setPubKey("8b7f328e-5a63-42f2-ad73-177d5157c4de_buy-nft-pay_1");
reqDto.setReceiverAddr("8b7f328e-5a63-42f2-ad73-177d5157c4de_buy-nft-pay_1");
reqDto.setNftIds("8b7f328e-5a63-42f2-ad73-177d5157c4de_buy-nft-pay_1");
reqDto.setOperateId("8b7f328e-5a63-42f2-ad73-177d5157c4de_buy-nft-pay_1");
reqDto.setSignature("8b7f328e-5a63-42f2-ad73-177d5157c4de_buy-nft-pay_1");
ZxlnftResponseDto<Nft048BatchTransferRespDto> resp = zxlnftSdkUtil.nft048BatchTransfer(reqDto);
System.out.println(resp.toJson());
}
/**
* 49 NFT转移状态查询
*/
@Test
public void nft049TransferResult(){
Nft049TransferResultReqDto reqDto = Nft049TransferResultReqDto.getNew();
reqDto.setOperatorPubKey("8b7f328e-5a63-42f2-ad73-177d5157c4de_buy-nft-pay_1");
reqDto.setTaskId("8b7f328e-5a63-42f2-ad73-177d5157c4de_buy-nft-pay_1");
ZxlnftResponseDto<Nft049TransferResultRespDto> resp = zxlnftSdkUtil.nft049TransferResult(reqDto);
System.out.println(resp.toJson());
}
/**
* 50 NFT销售状态变更
*/
@Test
public void nft050StatusUpdate(){
Nft050StatusUpdateReqDto reqDto = Nft050StatusUpdateReqDto.getNew();
ZxlnftResponseDto<Nft050StatusUpdateRespDto> resp = zxlnftSdkUtil.nft050StatusUpdate(reqDto);
System.out.println(resp.toJson());
}
/**
* 51 NFT销售状态变更查询
*/
@Test
public void nft051StatusUpdateResult(){
Nft051StatusUpdateResultReqDto reqDto = Nft051StatusUpdateResultReqDto.getNew();
ZxlnftResponseDto<Nft051StatusUpdateResultRespDto> resp = zxlnftSdkUtil.nft051StatusUpdateResult(reqDto);
System.out.println(resp.toJson());
}
/**
* 52 NFT售价变更
*/
@Test
public void nft052PriceUpdate(){
Nft052PriceUpdateReqDto reqDto = Nft052PriceUpdateReqDto.getNew();
ZxlnftResponseDto<Nft052PriceUpdateRespDto> resp = zxlnftSdkUtil.nft052PriceUpdate(reqDto);
System.out.println(resp.toJson());
}
/**
* 53 NFT售价变更状态查询
*/
@Test
public void nft053PriceUpdateResult(){
Nft053PriceUpdateResultReqDto reqDto = Nft053PriceUpdateResultReqDto.getNew();
reqDto.setPlatformPubKey("8b7f328e-5a63-42f2-ad73-177d5157c4de_buy-nft-pay_1");
reqDto.setTaskId("8b7f328e-5a63-42f2-ad73-177d5157c4de_buy-nft-pay_1");
ZxlnftResponseDto<Nft053PriceUpdateResultRespDto> resp = zxlnftSdkUtil.nft053PriceUpdateResult(reqDto);
System.out.println(resp.toJson());
}
/**
* 54 检查地址是否属于同一个用户主体接口
*/
@Test
public void nft054QueryUserAddressBelongToUser(){
Nft054QueryUserAddressBelongToUserReqDto reqDto = Nft054QueryUserAddressBelongToUserReqDto.getNew();
reqDto.setAddress1(zhouhuanAddress1);
reqDto.setAddress2(zhouhuanAddress2);
ZxlnftResponseDto<Nft054QueryUserAddressBelongToUserRespDto> resp = zxlnftSdkUtil.nft054QueryUserAddressBelongToUser(reqDto);
System.out.println(resp.toJson());
// 返回结果
// {"retCode":58,"retMsg":"NFT-验签错误","data":null}
}
}
package com.liquidnet.service.galaxy;
import com.liquidnet.common.third.zxlnft.biz.ZxlnftBiz;
import com.liquidnet.common.third.zxlnft.config.ZxlnftConfig;
import com.liquidnet.common.third.zxlnft.constant.ZxlErrorEnum;
import com.liquidnet.common.third.zxlnft.constant.ZxlnftEnum;
import com.liquidnet.common.third.zxlnft.dto.*;
import com.liquidnet.common.third.zxlnft.dto.wallet.*;
import com.liquidnet.common.third.zxlnft.exception.ZxlNftException;
import com.liquidnet.common.third.zxlnft.util.ZxlWalletSdkUtil;
import com.liquidnet.common.third.zxlnft.util.ZxlnftSdkUtil;
import com.liquidnet.commons.lang.util.BASE64Util;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.commons.lang.util.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.io.UnsupportedEncodingException;
import static com.liquidnet.service.galaxy.TestZxlnftSdkUtil.*;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: TestZxlnftService
* @Package com.liquidnet.service.zxlnft
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2022/3/3 16:55
*/
@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class TestZxlnftService {
@Autowired
private ZxlnftSdkUtil zxlnftSdkUtil;
@Autowired
private ZxlWalletSdkUtil zxlWalletSdkUtil;
@Autowired
private ZxlnftBiz zxlnftBiz;
@Autowired
private ZxlnftConfig zxlnftConfig;
/**
* 1、调用下发查询用户信息验证码接口
* 发送查询验证码
*/
@Test
public void platformRegister_1(){
String shenzongIdCard = "110102196904242477";
// 1.1.2调用下发查询用户信息验证码接口
Nft011UserQueryVerifyCodeReqDto nft011UserQueryVerifyCodeReqDto = Nft011UserQueryVerifyCodeReqDto.getNew();
//查询用户信息 发送手机验证码
nft011UserQueryVerifyCodeReqDto.setType(Integer.valueOf(ZxlnftEnum.RegisterTypeEnum.COMPANY.getCode()));
nft011UserQueryVerifyCodeReqDto.setCardNo(shenzongIdCard);
nft011UserQueryVerifyCodeReqDto.setScene(Integer.valueOf(ZxlnftEnum.UseSceneEnum.QUERY.getCode()));
ZxlnftResponseDto<Nft011UserQueryVerifyCodeRespDto> resp = zxlnftSdkUtil.nft011UserQueryVerifyCode(nft011UserQueryVerifyCodeReqDto);
}
/**
* 2、调用查询用户信息接口
* 获取用户唯一标识码
*/
@Test
public void platformRegister_2(){
String shenzongIdCard = "110102196904242477";
// 1.1.3调用查询用户信息接口
//查询企业 沈总
Nft012UserQueryReqDto nft012UserQueryReqDto = Nft012UserQueryReqDto.getNew();
nft012UserQueryReqDto.setType(Integer.valueOf(ZxlnftEnum.RegisterTypeEnum.COMPANY.getCode()));
nft012UserQueryReqDto.setCardNo(shenzongIdCard);
nft012UserQueryReqDto.setVerifyCode("153428");
ZxlnftResponseDto<Nft012UserQueryRespDto> nft012UserQueryResp = zxlnftSdkUtil.nft012UserQuery(nft012UserQueryReqDto);
if(nft012UserQueryResp.isSuccess()){
Nft012UserQueryRespDto nft012UserQueryRespDto = nft012UserQueryResp.getData();
log.info("userIdentification:{}",nft012UserQueryRespDto.getUserIdentification());
}
}
/**
* 3、调用下发用户信息查询验证码接口
* 发送邮箱验证码
*/
@Test
public void platformRegister_3(){
String shenzongIdCard = "110102196904242477";
// 1.1.4调用下发用户信息查询验证码接口
Nft011UserQueryVerifyCodeReqDto reqBindDto = Nft011UserQueryVerifyCodeReqDto.getNew();
//查询用户信息 发送邮箱验证码
reqBindDto.setType(Integer.valueOf(ZxlnftEnum.RegisterTypeEnum.COMPANY.getCode()));
reqBindDto.setCardNo(shenzongIdCard);
reqBindDto.setScene(Integer.valueOf(ZxlnftEnum.UseSceneEnum.BINDING.getCode()));
ZxlnftResponseDto<Nft011UserQueryVerifyCodeRespDto> nft011UserQueryVerifyCode = zxlnftSdkUtil.nft011UserQueryVerifyCode(reqBindDto);
}
/**
* 4、生成平台助记词和公钥、私钥
* (牢记助记词、公钥和私钥)
*/
@Test
public void platformRegister_4(){
String mnemonic = "stuff name goat health siren dumb gorilla antique board tenant buffalo present"; //安家宾
// String mnemonic = "economy cost balance weapon flight also nut biology very sun slight about"; //周焕
Long index = 0L;
String userPubKey = null;
String userPriKey = null;
try{
//生成助记词
CreateMnemonicReq req = CreateMnemonicReq.getNew();
CreateMnemonicResp createMnemonicResp = zxlWalletSdkUtil.createMnemonic(req);
mnemonic = createMnemonicResp.getMnemonic();
}catch(Exception e){
throw new ZxlNftException(ZxlErrorEnum.FAILURE.getCode(),"生成助记词失败!");
}
log.info("平台助记词:{}",mnemonic);
/**
* todo 把助记词进行redis存储 key=userID mnemonic/index/userIdentification/address
*/
if(StringUtil.isNotEmpty(mnemonic)){
//生成公私钥
DeriveKeyPairReq deriveKeyPairReq = DeriveKeyPairReq.getNew();
deriveKeyPairReq.setMnemonic(mnemonic);
// deriveKeyPairReq.setMnemonic(createMnemonicResp.getMnemonic());
deriveKeyPairReq.setIndex(index);
try{
DeriveKeyPairResp deriveKeyPairResp = zxlWalletSdkUtil.deriveKeyPair(deriveKeyPairReq);
if(!deriveKeyPairResp.getErr().equals("")) throw new Exception("生成公私钥失败!");
userPubKey = BASE64Util.encoded(deriveKeyPairResp.getPubKey());
userPriKey = BASE64Util.encoded(deriveKeyPairResp.getPriKey());
}catch(Exception e){
throw new ZxlNftException(ZxlErrorEnum.FAILURE.getCode(),e.getMessage());
}
}
log.info("平台公钥:{}",userPubKey);
log.info("平台私钥:{}",userPriKey);
}
/**
* 5、调用NFT平台自身地址绑定接口
*/
@Test
public void platformRegister_5(){
String userIdentification = "5ad54233459887b739d50e6aa026ec26fe43ccf24bc3da5865bba22295c8f180";
// 1.1.5调用NFT平台自身地址绑定接口
Nft015IdentityBindPlatformSelfReqDto nft015IdentityBindPlatformSelfReqDto = Nft015IdentityBindPlatformSelfReqDto.getNew();
//从步骤4获取的公钥
nft015IdentityBindPlatformSelfReqDto.setPubKey(zxlnftConfig.getNftPlatformPubKey());
//从步骤2获取的用户唯一标识
nft015IdentityBindPlatformSelfReqDto.setUserIdentification(userIdentification);
//从步骤3获取的邮箱验证码
nft015IdentityBindPlatformSelfReqDto.setVerifyCode("630216");
String signature = zxlnftBiz.createSign(zxlnftConfig.getNftPlatformPriKey(),nft015IdentityBindPlatformSelfReqDto.getUserIdentification());
nft015IdentityBindPlatformSelfReqDto.setSignData(signature);
ZxlnftResponseDto<Nft015IdentityBindPlatformSelfRespDto> resp = zxlnftSdkUtil.nft015IdentityBindPlatformSelf(nft015IdentityBindPlatformSelfReqDto);
System.out.println(resp.toJson());
// 1.1.6调用绑定状态批量查询接口
}
/**
* 2、自然人用户通过NFT平台注册绑定
*/
@Test
public void personRegisterBind(){
String userId = "310508344264376327445470";
String userName = "安家宾";
String mobile = "13811314082";
String idCardType = ZxlnftEnum.CardTypeEnum.ID_CARD.getCode();
String idCard = "142323198302062216";
// String userName = "周焕";
// String mobile = "18548596019";
// String idCardType = ZxlnftEnum.CardTypeEnum.ID_CARD.getCode();
// String idCard = "150422199805206019";
String mnemonic = "stuff name goat health siren dumb gorilla antique board tenant buffalo present"; //安家宾
// String mnemonic = "economy cost balance weapon flight also nut biology very sun slight about"; //周焕
Long index = 0L;
String userIdentification = null;
String address = null;
String userPubKey = null;
String userPriKey = null;
try{
//生成助记词
CreateMnemonicReq req = CreateMnemonicReq.getNew();
CreateMnemonicResp createMnemonicResp = zxlWalletSdkUtil.createMnemonic(req);
mnemonic = createMnemonicResp.getMnemonic();
}catch(Exception e){
throw new ZxlNftException(ZxlErrorEnum.FAILURE.getCode(),"生成助记词失败!");
}
/**
* todo 把助记词进行redis存储 key=userID mnemonic/index/userIdentification/address
*/
if(StringUtil.isNotEmpty(mnemonic)){
//生成公私钥
DeriveKeyPairReq deriveKeyPairReq = DeriveKeyPairReq.getNew();
deriveKeyPairReq.setMnemonic(mnemonic);
// deriveKeyPairReq.setMnemonic(createMnemonicResp.getMnemonic());
deriveKeyPairReq.setIndex(index);
try{
DeriveKeyPairResp deriveKeyPairResp = zxlWalletSdkUtil.deriveKeyPair(deriveKeyPairReq);
if(!deriveKeyPairResp.getErr().equals("")) throw new Exception("生成公私钥失败!");
userPubKey = BASE64Util.encoded(deriveKeyPairResp.getPubKey());
userPriKey = BASE64Util.encoded(deriveKeyPairResp.getPriKey());
}catch(Exception e){
throw new ZxlNftException(ZxlErrorEnum.FAILURE.getCode(),e.getMessage());
}
}
//1.2.1调用自然人注册实名(使用NFT平台签名)接口
Nft003RegisterPersonPlatformReqDto nft003ReqDto = Nft003RegisterPersonPlatformReqDto.getNew();
nft003ReqDto.setPersonName(userName);
// reqDto.setEmail("");
nft003ReqDto.setMobile(mobile);
nft003ReqDto.setIdCard(idCard);
nft003ReqDto.setCardType(Integer.valueOf(idCardType));
ZxlnftResponseDto<Nft003RegisterPersonPlatformRespDto> nft003Resp = zxlnftSdkUtil.nft003RegisterPersonPlatform(nft003ReqDto);
if(nft003Resp.isSuccess()){
userIdentification = nft003Resp.getData().getUserIdentification();
}
//
if(StringUtil.isNotEmpty(userPubKey)&&StringUtil.isNotEmpty(userPriKey)&&StringUtil.isNotEmpty(userIdentification)){
//1.2.2调用授信平台NFT地址绑定接口
Nft014IdentityBindSubmitByTrustedReqDto nft014ReqDto = Nft014IdentityBindSubmitByTrustedReqDto.getNew();
try {
nft014ReqDto.setUserPubKey(BASE64Util.decode(userPubKey));
nft014ReqDto.setUserIdentification(nft003Resp.getData().getUserIdentification());
String signature = zxlnftBiz.createSign(BASE64Util.decode(userPriKey),nft014ReqDto.getUserIdentification());
nft014ReqDto.setUserSignData(signature);
} catch (UnsupportedEncodingException e) {
log.error("公私钥解密错误!");
}
ZxlnftResponseDto<Nft014IdentityBindSubmitByTrustedRespDto> nft014Resp = zxlnftSdkUtil.nft014IdentityBindSubmitByTrusted(nft014ReqDto);
if(nft014Resp.isSuccess()){
//1.2.3调用绑定状态批量查询
Nft016IdentityBindQueryReqDto nft016ReqDto = Nft016IdentityBindQueryReqDto.getNew();
nft016ReqDto.setAddressList(nft014Resp.getData().getAddress());
ZxlnftResponseDto<Nft016IdentityBindQueryRespDto> nft016Resp = zxlnftSdkUtil.nft016IdentityBindQuery(nft016ReqDto);
if(nft016Resp.isSuccess()){
log.info("返回结果:{}",nft016Resp.toJson());
}
}else{
log.info("返回结果:{}",nft014Resp.toJson());
}
}
}
/**
* 3、素材上传操作
*/
@Test
public void nftUpload(){
String imageUrl = "https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/ZXLNFTIMAGE202202241512003609141721.jpg";
// String seriesName = "NOW_ZXL_NFT_PIC_skuId001"; //系列名字 skuId
String seriesName = "NOW_ZXL_NFT_PIC_skuId002"; //系列名字 skuId
// String filePath = "/Users/anjiabin/Downloads/zxl_image_test_002.jpeg";
// String filePath = "/Users/anjiabin/Downloads/zxl_image_series_test_001.jpeg";
String filePath = "/Users/anjiabin/Downloads/zxl_image_test_001.jpg";
String fileName = DateUtil.getNowTime(DateUtil.DATE_SMALL_STR)+"/"+ IDGenerator.getZxlNftImageCosCode() +".jpg";
//完整全路径 https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/NOW_ZXL_NFT_PIC001_test_skuId001/2022-03-04/ZXLNFTIMAGE202203041707466694345291.jpg
String fullFilePath = null; //需要保存,返回给调用者
String seriesId = null;
// 1.4.1调用图片内容检测接口
Nft008QueryImageModerationReqDto nft008ReqDto = Nft008QueryImageModerationReqDto.getNew();
nft008ReqDto.setImageUrl(imageUrl);
ZxlnftResponseDto<Nft008QueryImageModerationRespDto> nft008RespDto = zxlnftSdkUtil.nft008QueryImageModeration(nft008ReqDto);
if(!nft008RespDto.getData().getSuggestion().equals(ZxlnftEnum.SuggestionEnum.PASS.getCode())){
throw new ZxlNftException(ZxlErrorEnum.IMAGE_CHECK_ERROR.getCode(),ZxlErrorEnum.IMAGE_CHECK_ERROR.getMsg());
}
// 1.4.2调用生成素材上传临时密钥接口
Nft022UploadSecretReqDto nft022ReqDto = Nft022UploadSecretReqDto.getNew();
nft022ReqDto.setSeriesName(seriesName);
nft022ReqDto.setTimestamp(DateUtil.getNowSeconds().toString());
nft022ReqDto.setUserPubKey(zxlnftConfig.getNftPlatformPubKey());
//系列为空
String userData = nft022ReqDto.getTimestamp();
//系列不为空
if(StringUtil.isNotEmpty(nft022ReqDto.getSeriesName())){
userData = nft022ReqDto.getTimestamp() + "_" + nft022ReqDto.getSeriesName();
}
nft022ReqDto.setUserSignedData(zxlnftBiz.createSign(zxlnftConfig.getNftPlatformPriKey(),userData));
ZxlnftResponseDto<Nft022UploadSecretRespDto> nft022RespDto = zxlnftSdkUtil.nft022UploadSecret(nft022ReqDto);
if(!nft022RespDto.isSuccess()){
throw new ZxlNftException(ZxlErrorEnum.UPLOAD_TEMP_SECRET.getCode(),ZxlErrorEnum.UPLOAD_TEMP_SECRET.getMsg());
}
// 1.4.3调用sdk接口-上传cos接口
if(nft022RespDto.isSuccess()){
fullFilePath = nft022RespDto.getData().getUploadAddress().concat(fileName);
UploadToCosReq req = UploadToCosReq.getNew();
req.setCosPath(fullFilePath);
req.setTempSecretId(nft022RespDto.getData().getTempSecretId());
req.setTempSecretKey(nft022RespDto.getData().getTempSecretKey());
req.setSessionToken(nft022RespDto.getData().getSessionToken());
req.setFilePath(filePath);
UploadToCosResp uploadToCosResp = zxlWalletSdkUtil.uploadToCos(req);
}
log.info("完整的素材访问fullFilePath url:{}",fullFilePath);
// 1.4.4调用查询素材地址接口 -- 非必需
// Nft021UploadUrlReqDto nft021ReqDto = Nft021UploadUrlReqDto.getNew();
// nft021ReqDto.setSeriesName(seriesName);
// nft021ReqDto.setPlatformIdentification(zxlnftConfig.getPlatformIdentification());
// //如果上传人就是平台管理员,以下需要注释掉,因为会导致返回的地址多了一级目录
//// nft021ReqDto.setUserIdentification(zxlnftConfig.getPlatformIdentification());
// ZxlnftResponseDto<Nft021UploadUrlRespDto> resp = zxlnftSdkUtil.nft021UploadUrl(nft021ReqDto);
/**
* 进行系列声明
*/
Nft030SeriesClaimReqDto reqDto = Nft030SeriesClaimReqDto.getNew();
reqDto.setPubKey(zxlnftConfig.getNftPlatformPubKey());
reqDto.setSeriesName(seriesName);
//无限制系列 设置为0
reqDto.setTotalCount(0l);
reqDto.setOperateId(IDGenerator.get32UUID());
//系列封面
reqDto.setCoverUrl("https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/ZXLNFTIMAGE202202241512003609141721.jpg");
reqDto.setDesc("系列描述信息不超过500字符");
reqDto.setMaxPublishCount(0);
reqDto.setSeriesBeginFromZero(false);
ZxlnftResponseDto<Nft030SeriesClaimRespDto> nft30RespDto = zxlnftSdkUtil.nft030SeriesClaim(reqDto);
//{"taskId":"49d1cccc-e62c-40bc-923c-bfac31325351_nft-series-claim_1"}
if(nft30RespDto.isSuccess()){
//系列声明结果查询
Nft031SeriesClaimResultReqDto nft031ReqDto = Nft031SeriesClaimResultReqDto.getNew();
//第零个系列 无限制系列
nft031ReqDto.setTaskId(nft30RespDto.getData().getTaskId());
int count = 0;
while(StringUtil.isEmpty(seriesId)){
//休眠1秒钟,等待执行结果
try {
Thread.sleep(1000l);
} catch (InterruptedException e) {
e.printStackTrace();
}
count++;
log.info("=======执行第{}次查询,taskId:{}",count,nft031ReqDto.getTaskId());
ZxlnftResponseDto<Nft031SeriesClaimResultRespDto> nft031RespDtoTemp = zxlnftSdkUtil.nft031SeriesClaimResult(nft031ReqDto);
if(nft031RespDtoTemp.getData().getTaskStatus().toString().equals(ZxlnftEnum.TaskStatusEnum.TASK_SUCCESS.getCode())){
seriesId = nft031RespDtoTemp.getData().getSeriesId();
break;
}else if(nft031RespDtoTemp.getData().getTaskStatus().toString().equals(ZxlnftEnum.TaskStatusEnum.TASK_FAIL.getCode())){
log.info("任务执行失败!taskId:{}",nft031ReqDto.getTaskId());
break;
}
if(count==6){
log.info("=======查询共6次,跳出循环!taskId:{}",nft031ReqDto.getTaskId());
break;
}
}
log.info("系列声明结果查询 seriesId :{}",seriesId);
}
}
@Test
public void SeriesClaimResultQuery(){
String taskId = "49d1cccc-e62c-40bc-923c-bfac31325351_nft-series-claim_1";
Nft031SeriesClaimResultReqDto reqDto = Nft031SeriesClaimResultReqDto.getNew();
//第零个系列 无限制系列
reqDto.setTaskId(taskId);
ZxlnftResponseDto<Nft031SeriesClaimResultRespDto> resp = zxlnftSdkUtil.nft031SeriesClaimResult(reqDto);
System.out.println(resp.toJson());
}
/**
* 4、发行NFT
*/
@Test
public void nftPublish(){
String author = "正在现场创作者001";
String name = "上海草莓音乐节2022";
String url = "https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/ZXLNFTIMAGE202202241512003609141721.jpg";
String displayUrl = "https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/ZXLNFTIMAGE202202241512003609141721.jpg";
//第二中图片
url = "https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/NOW_ZXL_NFT_PIC_skuId002/ZXLNFTIMAGE202203141616443229613632.jpg";
displayUrl = "https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/ZXLNFTIMAGE202202241512003609141721.jpg";
String desc = "NFT描述信息";
String flag = "文创";
//发行个数
Long publishCount = 1L;
//开始索引
Integer seriesBeginIndex = 8;
Long sellCount = 1000L; //积分
//无限制系列
// String seriesId = "4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef_8a827e181b695fb8d9b081d3855d2895ced1d003ee186622a005cec37ea77e59";
//系列001
String seriesId = "4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef_ca49b5ebadd5f73ab057fe869bf897cbcc0f31e0b89db71cc3ec78bca2d16ed6";
//系列002
//String seriesId = "4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef_31ff9f7d4c33c98518e095fec6cecdab8d337751602cf6e651eb7d131cff5b61";
//
Nft032SeriesReqDto nft032ReqDto = Nft032SeriesReqDto.getNew();
nft032ReqDto.setSeriesId(seriesId);
//第零个系列 无限制系列查询
// nft032ReqDto.setSeriesId("4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef_8a827e181b695fb8d9b081d3855d2895ced1d003ee186622a005cec37ea77e59");
//第一个系列
// nft032ReqDto.setSeriesId("4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef_ca49b5ebadd5f73ab057fe869bf897cbcc0f31e0b89db71cc3ec78bca2d16ed6");
//第二个系列
// nft032ReqDto.setSeriesId("4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef_31ff9f7d4c33c98518e095fec6cecdab8d337751602cf6e651eb7d131cff5b61");
ZxlnftResponseDto<Nft032SeriesRespDto> resp = zxlnftSdkUtil.nft032Series(nft032ReqDto);
//该系列已经发行多少个nft
Long crtCount = resp.getData().getSeriesInfo().getCrtCount();
log.info("系列:{} 已发行 :{}",seriesId,crtCount);
//3.1.2调用NFT发行接口
/**
* 发行无限制系列
*/
Nft034PublishReqDto nft034ReqDto = Nft034PublishReqDto.getNew();
nft034ReqDto.setAuthor(author);
nft034ReqDto.setName(name);
nft034ReqDto.setUrl(url);
nft034ReqDto.setDisplayUrl(displayUrl);
nft034ReqDto.setDesc(desc);
nft034ReqDto.setFlag(flag);
nft034ReqDto.setPublishCount(publishCount);
//无限制零系列
nft034ReqDto.setSeriesId(seriesId);
nft034ReqDto.setSeriesBeginIndex(seriesBeginIndex);
nft034ReqDto.setSellStatus(Integer.parseInt(ZxlnftEnum.SellStatusEnum.CAN_SELL.getCode()));
nft034ReqDto.setSellCount(sellCount);
nft034ReqDto.setOperateId(IDGenerator.get32UUID());
nft034ReqDto.setMetaData("");
ZxlnftResponseDto<Nft034PublishRespDto> nft034RespDto = zxlnftSdkUtil.nft034Publish(nft034ReqDto);
if(nft034RespDto.isSuccess()){
//3.1.4查询 NFT发行结果
Nft035PublishResultReqDto nft035ReqDto = Nft035PublishResultReqDto.getNew();
nft035ReqDto.setTaskId(nft034RespDto.getData().getTaskId());
//休眠1秒钟,等待执行结果
try {
Thread.sleep(1000l);
} catch (InterruptedException e) {
e.printStackTrace();
}
long timeStart = System.currentTimeMillis();
log.info("=======执行第{}次查询,taskId:{}",1,nft035ReqDto.getTaskId());
ZxlnftResponseDto<Nft035PublishResultRespDto> nft035RespDto = zxlnftSdkUtil.nft035PublishResult(nft035ReqDto);
if(nft035RespDto.isSuccess()){
if(nft035RespDto.getData().getTaskStatus().toString().equals(ZxlnftEnum.TaskStatusEnum.TASK_FAIL.getCode())){
log.info("任务执行失败!taskId:{} taskMsg:{}",nft035ReqDto.getTaskId(),nft035RespDto.getData().getTaskMsg());
return;
}
int count = 1;
String nftIdBegin = nft035RespDto.getData().getNftIdBegin();
if(nft035RespDto.getData().getTaskStatus().toString().equals(ZxlnftEnum.TaskStatusEnum.PROCESSING.getCode())){
log.info(ZxlnftEnum.TaskStatusEnum.PROCESSING.getMessage());
while(StringUtil.isEmpty(nftIdBegin)){
//休眠1秒钟,等待执行结果
try {
Thread.sleep(1000l);
} catch (InterruptedException e) {
e.printStackTrace();
}
count++;
ZxlnftResponseDto<Nft035PublishResultRespDto> nft035RespDtoTemp = zxlnftSdkUtil.nft035PublishResult(nft035ReqDto);
log.info("=======执行第{}次查询,taskId:{}",count,nft035ReqDto.getTaskId());
if(nft035RespDtoTemp.getData().getTaskStatus().toString().equals(ZxlnftEnum.TaskStatusEnum.TASK_SUCCESS.getCode())){
nftIdBegin = nft035RespDtoTemp.getData().getNftIdBegin();
}else if(nft035RespDtoTemp.getData().getTaskStatus().toString().equals(ZxlnftEnum.TaskStatusEnum.TASK_FAIL.getCode())){
log.info("任务执行失败!taskId:{}",nft035ReqDto.getTaskId());
return;
}
if(count==6){
log.info("=======查询共6次,跳出循环!taskId:{}",nft035ReqDto.getTaskId());
break;
}
}
}else if(nft035RespDto.getData().getTaskStatus().toString().equals(ZxlnftEnum.TaskStatusEnum.TASK_SUCCESS.getCode())){
log.info(ZxlnftEnum.TaskStatusEnum.TASK_SUCCESS.getMessage());
}
log.info("发行NFT后返回给前端nftID:{}",nftIdBegin);
log.info("总共执行了{}次查询 总耗时:{} MS",count,(System.currentTimeMillis() - timeStart));
if(StringUtil.isNotEmpty(nftIdBegin)){
//3.1.3调用NFT查询接口
Nft036InfoReqDto nft036ReqDto = Nft036InfoReqDto.getNew();
nft036ReqDto.setNftId(nftIdBegin);
ZxlnftResponseDto<Nft036InfoRespDto> nft036RespDto = zxlnftSdkUtil.nft036Info(nft036ReqDto);
log.info("调用NFT查询接口 : {}",nft036RespDto.toJson());
}
}
}
}
/**
* 5、购买NFT
*/
@Test
public void nftBuy(){
// 3.2.1调用积分申请接口
// 3.2.2调用购买NFT接口
Nft043BuyReqDto nft043BuyReqDto = Nft043BuyReqDto.getNew();
// reqDto.setNftId("7f73aca56caaf57a20f0afff59318528f0f09ffbf028fe882161d3ce599d2854_1");
// nft043BuyReqDto.setNftId("08c152e5fa467d28b7add8e408fb3ecd1ed2ff209364adc1e394bde53929df8f_1");
nft043BuyReqDto.setNftId("43c169ae33d2ca5390a49d2319c14223ed5e7447c4b40c0422ef81691ddfee89_4");
nft043BuyReqDto.setApplyScore(1000);
nft043BuyReqDto.setReceiverPubKey(zhouhuanPubKey1);
nft043BuyReqDto.setPointReceiverAddr(zhouhuanAddress1);
nft043BuyReqDto.setOfferCount(1000l);
nft043BuyReqDto.setOperateId(IDGenerator.get32UUID());
/**
* 接收人的私钥签名,签名对象是(platformPubKey_receiverPubKey_pointReceiverAddr_applyScore_接口名_nftId_offerCount_operateId)
* 接口名:buy_nft
*/
String signMetaData = zxlnftConfig.getNftPlatformPubKey()
.concat("_").concat(nft043BuyReqDto.getReceiverPubKey())
.concat("_").concat(nft043BuyReqDto.getPointReceiverAddr())
.concat("_").concat(nft043BuyReqDto.getApplyScore().toString())
.concat("_").concat("buy_nft")
.concat("_").concat(nft043BuyReqDto.getNftId())
.concat("_").concat(nft043BuyReqDto.getOfferCount().toString())
.concat("_").concat(nft043BuyReqDto.getOperateId());
String signature = zxlnftBiz.createSign(zhouhuanPriKey1,signMetaData);
nft043BuyReqDto.setSignature(signature);
ZxlnftResponseDto<Nft043BuyRespDto> nft043RespDto = zxlnftSdkUtil.nft043Buy(nft043BuyReqDto);
if(nft043RespDto.isSuccess()){
//3.2.4查询NFT购买结果
Nft044BuyResultReqDto nft044ReqDto = Nft044BuyResultReqDto.getNew();
nft044ReqDto.setTaskId(nft043RespDto.getData().getTaskId());
long timeStart = System.currentTimeMillis();
ZxlnftResponseDto<Nft044BuyResultRespDto> nft044RespDto = zxlnftSdkUtil.nft044BuyResult(nft044ReqDto);
if(nft044RespDto.isSuccess()){
int count = 1;
String payTaskId = null;
while(payTaskId == null){
try {
Thread.sleep(1000l);
} catch (InterruptedException e) {
e.printStackTrace();
}
count++;
log.info("=======执行第{}次查询,taskId:{}",1,nft044ReqDto.getTaskId());
ZxlnftResponseDto<Nft044BuyResultRespDto> nft044RespDtoTemp = zxlnftSdkUtil.nft044BuyResult(nft044ReqDto);
if(nft044RespDtoTemp.getData().getTaskStatus().toString().equals(ZxlnftEnum.TaskStatusEnum.TASK_SUCCESS.getCode())){
payTaskId = nft044RespDtoTemp.getData().getPayTaskId();
}else if(nft044RespDtoTemp.getData().getTaskStatus().toString().equals(ZxlnftEnum.TaskStatusEnum.TASK_FAIL.getCode())){
log.info("任务执行失败!taskId:{}",nft044ReqDto.getTaskId());
return;
}
if(count==6){
log.info("=======查询共6次,跳出循环!taskId:{}",nft044ReqDto.getTaskId());
break;
}
}
log.info("总共执行了多少次查询:{} 总耗时:{}",count,System.currentTimeMillis() - timeStart);
if(StringUtil.isNotEmpty(payTaskId)){
//3.2.5查询NFT购买支付结果
Nft045BuyPayResultReqDto nft045ReqDto = Nft045BuyPayResultReqDto.getNew();
nft045ReqDto.setTaskId(payTaskId);
ZxlnftResponseDto<Nft045BuyPayResultRespDto> nft045RespDto = zxlnftSdkUtil.nft045BuyPayResult(nft045ReqDto);
}
}
}
}
/**
* 6、查询NFT相关信息
*/
@Test
public void nftQuery(){
}
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>liquidnet-bus-service</artifactId>
<groupId>com.liquidnet</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>liquidnet-service-galaxy</artifactId>
<packaging>pom</packaging>
<modules>
<module>liquidnet-service-galaxy-common</module>
<module>liquidnet-service-galaxy-impl</module>
</modules>
<dependencies>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-common-swagger</artifactId>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-common-web</artifactId>
</dependency>
</dependencies>
</project>
......@@ -3,13 +3,13 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>liquidnet-service-galaxy</artifactId>
<artifactId>liquidnet-service-goblin</artifactId>
<groupId>com.liquidnet</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>liquidnet-service-galaxy-common</artifactId>
<artifactId>liquidnet-service-goblin-common</artifactId>
<dependencies>
<dependency>
......
......@@ -262,5 +262,187 @@ CREATE TABLE `goblin_goods_anticipate` (
alter table dragon_orders add receipt_data text comment '苹果支付回调的code';
#---- NFT——galaxy ----
drop TABLE if exists `galaxy_user_info`;
create table galaxy_user_info
(
mid bigint unsigned NOT NULL AUTO_INCREMENT,
user_id varchar(200) NOT NULL COMMENT '用户ID',
user_name varchar(200) NOT NULL COMMENT '用户姓名',
user_type varchar(3) NOT NULL DEFAULT '2' COMMENT '1企业 2个人',
mobile varchar(20) COMMENT '移动手机号',
id_card_type varchar(3) NOT NULL COMMENT '证件类型( 1-身份证 2-护照 3-港澳通行证 4-台湾通行证 5-外国人永居身份证 6-港澳台居民居住证 7-其它)',
id_card varchar(50) NOT NULL COMMENT '证件号码',
mnemonic varchar(200) COMMENT '助记词',
mnemonic_index varchar(3) NOT NULL DEFAULT '0' COMMENT '助记词索引',
user_identification varchar(200) COMMENT '用户链上唯一ID',
user_pub_key varchar(500) COMMENT '用户公钥',
user_pri_key varchar(500) COMMENT '用户私钥',
block_chain_address varchar(200) COMMENT '区块链地址',
router_type varchar(200) NOT NULL COMMENT '路由类型(zxinchain、eth、antchain)',
created_at timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`mid`)
) ENGINE = InnoDB comment '数字藏品用户信息';
create index gui_idx_user_id on galaxy_user_info (user_id);
drop TABLE if exists `galaxy_series_info`;
create table galaxy_series_info
(
mid bigint unsigned NOT NULL AUTO_INCREMENT,
series_info_id varchar(100) NOT NULL COMMENT '系列存储ID',
series_name varchar(28) NOT NULL COMMENT '本地系列唯一名称(前缀+skuid)',
series_code varchar(200) NOT NULL COMMENT '系列编码',
series_id varchar(200) COMMENT '区块链上系列ID',
total_count varchar(50) COMMENT '系列发行总量',
crt_count varchar(200) COMMENT '系列已发行个数',
series_claim_task_id varchar(200) COMMENT '系列声明任务ID',
series_claim_status varchar(200) COMMENT '系列声明状态',
cover_url varchar(1000) COMMENT '系列显示封面',
series_desc varchar(200) COMMENT '系列描述信息,不超过500个字符',
chain_timestamp varchar(30) COMMENT '系列链上声明时间',
trade_hash varchar(100) COMMENT '系列链上交易hash',
nft_count int default 0 COMMENT '系列中包含nft个数',
router_type varchar(200) NOT NULL COMMENT '路由类型(zxinchain、eth、antchain)',
created_at timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`mid`)
) ENGINE = InnoDB comment '数字藏品系列信息';
create index gsi_idx_series_code on galaxy_series_info (series_code);
create index gsi_idx_series_info_id on galaxy_series_info (series_info_id);
drop TABLE if exists `galaxy_series_nft_info`;
create table galaxy_series_nft_info
(
mid bigint unsigned NOT NULL AUTO_INCREMENT,
series_nft_info_id varchar(100) NOT NULL COMMENT '系列nft存储ID',
series_info_id varchar(100) NOT NULL COMMENT '系列存储ID',
sku_id varchar(200) NOT NULL COMMENT '本地系列nft唯一标识id',
series_name varchar(28) NOT NULL COMMENT '本地系列唯一名称(前缀+skuid)',
series_code varchar(200) NOT NULL COMMENT '本地系列唯一编码',
series_id varchar(200) COMMENT '区块链上系列ID',
nft_total_count varchar(50) COMMENT '系列nft发行总量',
nft_crt_count varchar(200) COMMENT '系列nft已发行个数',
nft_id_begin varchar(200) COMMENT '系列nft发行开始id',
nft_id_begin_index int default 0 COMMENT 'nftId开始索引',
nft_publish_number int default 1 COMMENT 'nft系列发行序号',
original_nft_url varchar(1000) COMMENT 'nft素材原始地址',
original_display_url varchar(1000) COMMENT 'nft显示素材原始地址',
author varchar(200) COMMENT '作者名',
nft_name varchar(200) COMMENT 'nft名字(sku名称)',
nft_url varchar(1000) COMMENT 'nft素材地址',
display_url varchar(1000) COMMENT '预览图url,不超过1024个字符',
nft_desc varchar(400) COMMENT 'nft简介,500个字符以内',
nft_flag varchar(200) COMMENT '标签,【文创】,游戏,动漫,30个字符以内',
sell_count varchar(200) COMMENT '可售状态下有意义',
nft_hash varchar(200) COMMENT ' 系列声明中nftHash',
router_type varchar(200) NOT NULL COMMENT '路由类型(zxinchain、eth、antchain)',
created_at timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`mid`)
) ENGINE = InnoDB comment '数字藏品系列nft信息';
-- alter table galaxy_series_nft_info add nft_id_begin_index int default 0 comment 'nftId开始索引' after nft_id_begin;
-- alter table galaxy_series_nft_info add nft_publish_number int default 1 comment 'nft系列发行序号' after nft_id_begin_index;
create index gsni_idx_series_nft_info_id on galaxy_series_nft_info (series_nft_info_id);
create index gsni_idx_series_info_id on galaxy_series_nft_info (series_info_id);
create index gsni_idx_sku_id on galaxy_series_nft_info (sku_id);
create index gsni_idx_series_code on galaxy_series_nft_info (series_code);
drop TABLE if exists `galaxy_nft_order_info`;
create table galaxy_nft_order_info
(
mid bigint unsigned NOT NULL AUTO_INCREMENT,
nft_order_pay_id varchar(100) COMMENT '订单支付唯一ID',
user_id varchar(200) NOT NULL COMMENT '用户ID',
sku_id varchar(200) NOT NULL COMMENT '应用系统购买系列唯一ID',
series_name varchar(28) NOT NULL COMMENT '系列的唯一名称(前缀+skuid)',
series_id varchar(200) COMMENT '系列的唯一Id',
series_code varchar(200) NOT NULL COMMENT '本地系列唯一编码',
nft_id varchar(200) COMMENT 'nftId',
nft_name varchar(200) COMMENT 'nft名字(sku名称)',
nft_price varchar(50) COMMENT 'nft购买价格',
nft_publish_task_id varchar(100) COMMENT 'nft发行任务id',
nft_publish_from_address varchar(200) COMMENT 'nft发行转出方地址',
nft_publish_to_address varchar(200) COMMENT 'nft发行转入方地址',
nft_publish_chain_timestamp varchar(30) COMMENT 'nft发行时间',
nft_publish_status varchar(30) COMMENT 'nft发行状态',
nft_publish_trade_hash varchar(100) COMMENT 'nft发行交易hash',
nft_buy_task_id varchar(100) COMMENT 'nft购买任务id',
nft_buy_from_address varchar(200) COMMENT 'nft购买转出方地址',
nft_buy_to_address varchar(200) COMMENT 'nft购买转入方地址',
nft_buy_chain_timestamp varchar(30) COMMENT 'nft购买时间',
nft_buy_status varchar(30) COMMENT 'nft购买状态',
nft_buy_trade_hash varchar(100) COMMENT 'nft购买交易hash',
nft_buy_pay_task_id varchar(100) COMMENT 'nft购买支付任务id',
router_type varchar(20) NOT NULL COMMENT '路由类型(zxinchain、eth、antchain)',
created_at timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`mid`)
) ENGINE = InnoDB comment '数字藏品订单信息';
-- alter table galaxy_nft_order_info add nft_name varchar(200) comment 'nft名字' after nft_id;
create index gsoi_idx_nft_order_pay_id on galaxy_nft_order_info (nft_order_pay_id);
create index gsoi_idx_user_id on galaxy_nft_order_info (user_id);
create index gsoi_idx_sku_id on galaxy_nft_order_info (sku_id);
create index gsoi_idx_series_code on galaxy_nft_order_info (series_code);
drop TABLE if exists `galaxy_nft_trade_info`;
create table galaxy_nft_trade_info
(
mid bigint unsigned NOT NULL AUTO_INCREMENT,
user_id varchar(200) NOT NULL COMMENT '用户ID',
nft_id varchar(200) COMMENT 'nftId',
nft_name varchar(200) COMMENT 'nft名字(sku名称)',
series_name varchar(28) NOT NULL COMMENT '系列的唯一名称',
series_id varchar(200) COMMENT '系列的唯一Id',
series_code varchar(200) NOT NULL COMMENT '本地系列唯一编码',
trade_hash varchar(200) COMMENT '交易hash',
chain_timestamp varchar(20) COMMENT '链上交易时间戳',
from_address varchar(200) COMMENT '转出方地址',
to_address varchar(200) COMMENT '转入方地址',
trade_price bigint COMMENT '交易价格',
trade_type varchar(3) COMMENT '交易类别 1发行 2购买 3转移 4设置价格 5设置状态',
router_type varchar(20) NOT NULL COMMENT '路由类型(zxinchain、eth、antchain)',
created_at timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`mid`)
) ENGINE = InnoDB comment '数字藏品交易信息';
create index gnti_idx_user_id on galaxy_nft_trade_info (user_id);
create index gnti_idx_nft_id on galaxy_nft_trade_info (nft_id);
create index gnti_idx_series_code on galaxy_nft_trade_info (series_code);
drop TABLE if exists `galaxy_nft_order_fail_log`;
create table galaxy_nft_order_fail_log
(
mid bigint unsigned NOT NULL AUTO_INCREMENT,
nft_order_pay_id varchar(100) COMMENT '订单支付唯一ID',
user_id varchar(200) NOT NULL COMMENT '用户ID',
nft_id varchar(200) COMMENT 'nftId',
nft_name varchar(200) COMMENT 'nft名字(sku名称)',
series_name varchar(28) NOT NULL COMMENT '系列的唯一名称',
series_id varchar(200) COMMENT '系列的唯一Id',
series_code varchar(200) NOT NULL COMMENT '本地系列唯一编码',
taskId varchar(100) COMMENT '任务ID',
fail_reason_desc varchar(20) COMMENT '失败原因',
fail_reason_desc_second varchar(20) COMMENT '失败原因2',
trade_type varchar(3) COMMENT '交易类别 1发行 2购买 3转移 4设置价格 5设置状态',
router_type varchar(20) NOT NULL COMMENT '路由类型(zxinchain、eth、antchain)',
deal_with_status varchar(3) COMMENT '处理状态 0数据初始化 1已处理成功 2处理失败 3不做处理',
created_at timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`mid`)
) ENGINE = InnoDB comment '数字藏品发行购买失败记录表';
create index gnofl_idx_nft_order_pay_id on galaxy_nft_order_fail_log (nft_order_pay_id);
create index gnofl_idx_user_id on galaxy_nft_order_fail_log (user_id);
create index gnofl_idx_nft_id on galaxy_nft_order_fail_log (nft_id);
create index gnofl_idx_series_code on galaxy_nft_order_fail_log (series_code);
# ---- CONFIG 修改 ----
# ---- liquidnet-client-admin-web.yml url7: "/goblin/common/goods?type=0" #商品 url9: "/goblin/common/goods?type=1" #NFT
\ No newline at end of file
......@@ -114,6 +114,14 @@ db.createCollection("GoblinUserDigitalArtworkVo");
db.createCollection("GoblinGoodAnticipateUserVo");
db.createCollection("GoblinGoodsAnticipateValueVo");
db.createCollection("GoblinGoodsAnticipateVo");
db.createCollection("GalaxyUserInfoVo");
db.createCollection("GalaxySeriesInfoVo");
db.createCollection("GalaxySeriesNftInfoVo");
db.createCollection("GalaxySeriesNftUploadVo");
db.createCollection("GalaxyNftOrderVo");
db.createCollection("GalaxyNftOrderBindVo");
db.createCollection("GalaxyNftOrderFailLogVo");
db.createCollection("GalaxyNftTradeVo");
# 索引
db.GoblinNftOrderVo.createIndex({orderId:"hashed"});
db.GoblinNftOrderVo.createIndex({orderCode:"hashed"});
......@@ -129,6 +137,14 @@ db.GoblinGoodAnticipateUserVo.createIndex({skuId:"hashed"});
db.GoblinGoodsAnticipateVo.createIndex({antId:"hashed"});
db.GoblinGoodsAnticipateValueVo.createIndex({skuId:"hashed"});
db.GoblinGoodsAnticipateValueVo.createIndex({antId:"hashed"});
db.GalaxyUserInfoVo.createIndex({userId:"hashed"});
db.GalaxySeriesInfoVo.createIndex({seriesCode:"hashed"});
db.GalaxySeriesNftInfoVo.createIndex({skuId:"hashed"});
db.GalaxySeriesNftUploadVo.createIndex({skuId:"hashed"});
db.GalaxyNftOrderVo.createIndex({nftOrderPayId:"hashed"});
db.GalaxyNftOrderBindVo.createIndex({nftOrderPayId:"hashed"});
db.GalaxyNftOrderFailLogVo.createIndex({nftOrderPayId:"hashed"});
db.GalaxyNftTradeVo.createIndex({nftId:"hashed"});
# 分片
sh.enableSharding("test_ln_scene");
sh.shardCollection("test_ln_scene.GoblinNftOrderVo",{"orderId":"hashed"});
......@@ -137,3 +153,11 @@ sh.shardCollection("test_ln_scene.GoblinUserDigitalArtworkVo",{"artworkId":"hash
sh.shardCollection("test_ln_scene.GoblinGoodAnticipateUserVo",{"skuId":"hashed"});
sh.shardCollection("test_ln_scene.GoblinGoodsAnticipateValueVo",{"antId":"hashed"});
sh.shardCollection("test_ln_scene.GoblinGoodsAnticipateVo",{"antId":"hashed"});
sh.shardCollection("test_ln_scene.GalaxyUserInfoVo",{"userId":"hashed"});
sh.shardCollection("test_ln_scene.GalaxySeriesInfoVo",{"seriesCode":"hashed"});
sh.shardCollection("test_ln_scene.GalaxySeriesNftInfoVo",{"skuId":"hashed"});
sh.shardCollection("test_ln_scene.GalaxySeriesNftUploadVo",{"skuId":"hashed"});
sh.shardCollection("test_ln_scene.GalaxyNftOrderVo",{"nftOrderPayId":"hashed"});
sh.shardCollection("test_ln_scene.GalaxyNftOrderBindVo",{"nftOrderPayId":"hashed"});
sh.shardCollection("test_ln_scene.GalaxyNftOrderFailLogVo",{"nftOrderPayId":"hashed"});
sh.shardCollection("test_ln_scene.GalaxyNftTradeVo",{"nftId":"hashed"});
\ No newline at end of file
......@@ -54,6 +54,22 @@
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-service-goblin-common</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-common-third-zxlnft</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-common-third-antchain</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
......
//package com.liquidnet.service.galaxy.aop;
package com.liquidnet.service.galaxy.aop;//package com.liquidnet.service.galaxy.aop;
//
//import com.alibaba.fastjson.JSON;
//import com.alibaba.fastjson.serializer.SerializerFeature;
......
package com.liquidnet.service.galaxy.service.impl;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.galaxy.dto.param.*;
import com.liquidnet.service.galaxy.dto.param.GalaxyNftPublishReqDto;
import com.liquidnet.service.galaxy.dto.param.GalaxyNftPublishRespDto;
import com.liquidnet.service.galaxy.dto.param.GalaxyNftPublishResultQueryReqDto;
import com.liquidnet.service.galaxy.dto.param.GalaxyNftPublishResultQueryRespDto;
import com.liquidnet.service.galaxy.router.strategy.GalaxyRouterStrategyContext;
import com.liquidnet.service.galaxy.service.IGalaxyPublishService;
import lombok.extern.slf4j.Slf4j;
......
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