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

Commit e054f495 authored by anjiabin's avatar anjiabin

nft修改购买异常逻辑

parent feb68221
......@@ -13,6 +13,7 @@ public class GalaxyConstant {
public static final String REDIS_KEY_GALAXY_USER="galaxy:user:";
public static final String REDIS_KEY_GALAXY_SERIES="galaxy:series:";
public static final String REDIS_KEY_GALAXY_SERIES_NFT_UPLOAD="galaxy:series:nft:upload:";
public static final String REDIS_KEY_GALAXY_SERIES_NFT_UPLOAD_TEMP_SECRET="galaxy:series:nft:upload:secret:";
public static final String REDIS_KEY_GALAXY_SERIES_NFT="galaxy:series:nft:";
public static final String REDIS_KEY_GALAXY_TRADE_ORDER="galaxy:trade:order:";
public static final String REDIS_KEY_GALAXY_PUBLISH_NFT="galaxy:publish:nft:";
......
package com.liquidnet.service.galaxy.dto.bo;
import com.liquidnet.commons.lang.util.JsonUtils;
import lombok.Data;
import java.io.Serializable;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: GalaxySeriesNftUploadTempSecretBo
* @Package com.liquidnet.service.galaxy.dto.bo
* @Copyright: LightNet @ Copyright (c) 2022
* @date 2022/4/7 13:49
*/
@Data
public class GalaxySeriesNftUploadTempSecretBo implements Serializable,Cloneable {
String tempSecretId;
String tempSecretKey;
String sessionToken;
String uploadAddress;
String timestamp;
@Override
public String toString(){
return JsonUtils.toJson(this);
}
private static final GalaxySeriesNftUploadTempSecretBo obj = new GalaxySeriesNftUploadTempSecretBo();
public static GalaxySeriesNftUploadTempSecretBo getNew() {
try {
return (GalaxySeriesNftUploadTempSecretBo) obj.clone();
} catch (CloneNotSupportedException e) {
return new GalaxySeriesNftUploadTempSecretBo();
}
}
}
......@@ -542,4 +542,18 @@ public abstract class AbstractDataUtils {
log.error("#GalaxySeriesNftInfoBo error ==> MESSAGE:{}",e.getMessage());
}
}
public void setSeriesNftUploadTempSecretBo(String uploadSeriesName,GalaxySeriesNftUploadTempSecretBo seriesNftUploadTempSecretBo){
long keyExpireTime = 320;
this.getRedisUtil().set(GalaxyConstant.REDIS_KEY_GALAXY_SERIES_NFT_UPLOAD_TEMP_SECRET.concat(":") + uploadSeriesName,seriesNftUploadTempSecretBo,keyExpireTime);
}
public GalaxySeriesNftUploadTempSecretBo getSeriesNftUploadTempSecretBo(String uploadSeriesName){
Object obj = this.getRedisUtil().get(GalaxyConstant.REDIS_KEY_GALAXY_SERIES_NFT_UPLOAD_TEMP_SECRET.concat(":") + uploadSeriesName);
if(obj!=null){
return (GalaxySeriesNftUploadTempSecretBo) obj;
}else{
return null;
}
}
}
......@@ -23,6 +23,7 @@ import com.liquidnet.service.galaxy.constant.GalaxyErrorEnum;
import com.liquidnet.service.galaxy.dto.bo.GalaxySeriesInfoBo;
import com.liquidnet.service.galaxy.dto.bo.GalaxySeriesNftInfoBo;
import com.liquidnet.service.galaxy.dto.bo.GalaxySeriesNftUploadBo;
import com.liquidnet.service.galaxy.dto.bo.GalaxySeriesNftUploadTempSecretBo;
import com.liquidnet.service.galaxy.dto.param.*;
import com.liquidnet.service.galaxy.utils.GalaxyDataUtils;
import lombok.extern.slf4j.Slf4j;
......@@ -396,34 +397,15 @@ public class ZxinArtworkBiz {
//完整全路径 https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/NOW_ZXL_NFT_PIC001_test_skuId001/2022-03-04/ZXLNFTIMAGE202203041707466694345291.jpg
String fullFilePath = null; //需要保存,返回给调用者
// 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);
GalaxySeriesNftUploadTempSecretBo seriesNftUploadTempSecretBo = this.getSeriesNftUploadTempSecret(seriesName);
if(StringUtil.isNotNull(seriesNftUploadTempSecretBo)){
fullFilePath = seriesNftUploadTempSecretBo.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.setTempSecretId(seriesNftUploadTempSecretBo.getTempSecretId());
req.setTempSecretKey(seriesNftUploadTempSecretBo.getTempSecretKey());
req.setSessionToken(seriesNftUploadTempSecretBo.getSessionToken());
req.setFilePath(filePath);
UploadToCosResp uploadToCosResp = zxlWalletSdkUtil.uploadToCos(req);
}
......@@ -432,6 +414,42 @@ public class ZxinArtworkBiz {
return fullFilePath;
}
public GalaxySeriesNftUploadTempSecretBo getSeriesNftUploadTempSecret(String seriesName){
//获取临时密钥
GalaxySeriesNftUploadTempSecretBo seriesNftUploadTempSecretBo = dataUtils.getSeriesNftUploadTempSecretBo(seriesName);
if(StringUtil.isNull(seriesNftUploadTempSecretBo)){
// 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());
}else{
seriesNftUploadTempSecretBo.setTempSecretId(nft022RespDto.getData().getTempSecretId());
seriesNftUploadTempSecretBo.setTempSecretKey(nft022RespDto.getData().getTempSecretId());
seriesNftUploadTempSecretBo.setSessionToken(nft022RespDto.getData().getTempSecretId());
seriesNftUploadTempSecretBo.setUploadAddress(nft022RespDto.getData().getTempSecretId());
seriesNftUploadTempSecretBo.setTimestamp(DateUtil.getNowTime());
dataUtils.setSeriesNftUploadTempSecretBo(seriesName,seriesNftUploadTempSecretBo);
}
}
return seriesNftUploadTempSecretBo;
}
private GalaxySeriesInfoBo buildSeriesInfoBo(GalaxyArtSeriesClaimReqDto reqDto,String taskId,String publishStatus){
String seriesName = reqDto.getSkuId();
......
......@@ -7,6 +7,7 @@ import com.liquidnet.common.third.zxlnft.dto.*;
import com.liquidnet.common.third.zxlnft.util.ZxlnftSdkUtil;
import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.galaxy.biz.GalaxyBeanTransferBiz;
import com.liquidnet.service.galaxy.biz.GalaxyEnumBiz;
import com.liquidnet.service.galaxy.constant.GalaxyEnum;
......@@ -16,6 +17,7 @@ import com.liquidnet.service.galaxy.dto.bo.GalaxySeriesNftInfoBo;
import com.liquidnet.service.galaxy.dto.bo.GalaxyUserInfoBo;
import com.liquidnet.service.galaxy.dto.param.*;
import com.liquidnet.service.galaxy.utils.GalaxyDataUtils;
import com.liquidnet.service.galaxy.utils.QueueUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
......@@ -58,6 +60,10 @@ public class ZxinTradeBiz {
@Autowired
private ZxinTradeCommonBiz zxinTradeCommonBiz;
@Autowired
private QueueUtil queueUtil;
public ResponseDto<GalaxyNftBuyRespDto> nftBuy(GalaxyNftBuyReqDto nftBuyReqDto){
//获取订单信息
GalaxyNftOrderBo nftOrderBo = dataUtils.getNftOrderBo(nftBuyReqDto.getRouterType(),nftBuyReqDto.getNftOrderPayId());
......@@ -146,16 +152,17 @@ public class ZxinTradeBiz {
return ResponseDto.failure(GalaxyErrorEnum.PUBLISH_ORDER_NOT_EXIST.getCode(), GalaxyErrorEnum.PUBLISH_ORDER_NOT_EXIST.getMessage());
}
/**
* TODO 如果订单信息是购买失败,则直接调用至信链查询购买结果
*/
//是否需要发起二次购买
boolean isNeedSecondBuy = false;
if(StringUtil.isNotEmpty(nftOrderBo.getNftPublishStatus())
&& (GalaxyEnum.TaskStatusEnum.INIT.getCode().equalsIgnoreCase(nftOrderBo.getNftPublishStatus())
||GalaxyEnum.TaskStatusEnum.PROCESSING.getCode().equalsIgnoreCase(nftOrderBo.getNftPublishStatus()))){
//判断是否需要二次发行
//判断是否需要二次购买
if(StringUtil.isEmpty(nftOrderBo.getNftPublishTaskId())){
isNeedSecondBuy = true;
}
//执行nft发行结果查询
GalaxyNftPublishResultQueryReqDto nftPublishResultQueryReqDto = GalaxyNftPublishResultQueryReqDto.getNew();
......@@ -166,13 +173,12 @@ public class ZxinTradeBiz {
GalaxyNftPublishResultQueryRespDto nftPublishResultQueryRespDtoTemp = publishResultQueryRespDto.getData();
BeanUtil.copy(nftPublishResultQueryRespDtoTemp,nftOrderBo);
}
}
if(StringUtil.isNotEmpty(nftOrderBo.getNftBuyStatus())
}else if(StringUtil.isNotEmpty(nftOrderBo.getNftBuyStatus())
&& (GalaxyEnum.TaskStatusEnum.INIT.getCode().equalsIgnoreCase(nftOrderBo.getNftBuyStatus())
||GalaxyEnum.TaskStatusEnum.PROCESSING.getCode().equalsIgnoreCase(nftOrderBo.getNftBuyStatus()))){
//判断是否需要二次购买
if(StringUtil.isEmpty(nftOrderBo.getNftBuyTaskId())){
isNeedSecondBuy = true;
}
//执行nft购买结果查询
GalaxyNftBuyResultQueryReqDto nftBuyResultQueryReqDto = GalaxyNftBuyResultQueryReqDto.getNew();
......@@ -185,6 +191,11 @@ public class ZxinTradeBiz {
}
}
//判断是否需要二次购买
if(isNeedSecondBuy){
queueUtil.sendMsgByRedis(MQConst.GalaxyQueue.JSON_NFT_PUBLISH_AND_BUY.getKey(), JsonUtils.toJson(reqDto));
}
GalaxyNftPublishAndBuyResultQueryRespDto resultQueryRespDto = GalaxyNftPublishAndBuyResultQueryRespDto.getNew();
if(nftOrderBo.getNftPublishStatus().equalsIgnoreCase(GalaxyEnum.TaskStatusEnum.TASK_SUCCESS.getCode())&&
nftOrderBo.getNftBuyStatus().equalsIgnoreCase(GalaxyEnum.TaskStatusEnum.TASK_SUCCESS.getCode())){
......
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;
......@@ -36,6 +38,26 @@ public class TestRedisUtil {
@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(){
......
......@@ -365,22 +365,31 @@ public class TestZxlnftSdkUtil {
@Test
public void nft022UploadSecret(){
Nft022UploadSecretReqDto reqDto = Nft022UploadSecretReqDto.getNew();
reqDto.setSeriesName("NOW_ZXL_NFT_PIC001_test_skuId001");
reqDto.setTimestamp(DateUtil.getNowSeconds().toString());
reqDto.setUserPubKey(zxlnftConfig.getNftPlatformPubKey());
//系列为空
String userData = reqDto.getTimestamp();
//系列不为空
if(StringUtil.isNotEmpty(reqDto.getSeriesName())){
userData = reqDto.getTimestamp() + "_" + reqDto.getSeriesName();
for(int i=0;i<10;i++){
System.out.println("=============执行第"+(i+1)+"个===================================");
Nft022UploadSecretReqDto reqDto = Nft022UploadSecretReqDto.getNew();
reqDto.setSeriesName("NOW_ZXL_NFT_PIC001_test_skuId001");
reqDto.setTimestamp(DateUtil.getNowSeconds().toString());
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());
}
reqDto.setUserSignedData(zxlnftBiz.createSign(zxlnftConfig.getNftPlatformPriKey(),userData));
ZxlnftResponseDto<Nft022UploadSecretRespDto> resp = zxlnftSdkUtil.nft022UploadSecret(reqDto);
System.out.println(resp.toJson());
//为什了发行人和平台是同一个人时,uploadAddres会少一级目录 少了个人目录,是自动省略了吗?
// {
......@@ -507,7 +516,8 @@ public class TestZxlnftSdkUtil {
//第二个系列
// reqDto.setSeriesId("4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef_31ff9f7d4c33c98518e095fec6cecdab8d337751602cf6e651eb7d131cff5b61");
//新的 NOW_ZXL_1234567890-002
reqDto.setSeriesId("4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef_eaf0b265e4717529edb5130e7e8f997d6664a8c81c3b2388fa2b8c6af9b6fdc0");
// reqDto.setSeriesId("4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef_eaf0b265e4717529edb5130e7e8f997d6664a8c81c3b2388fa2b8c6af9b6fdc0");
reqDto.setSeriesId("4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef_224c288ded71e9a75190f018eb7e5382119c2d7a2216aaa4dbd7e602b82e247e");
......
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