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

Commit 7975ad85 authored by anjiabin's avatar anjiabin

Merge branch 'dev-zxlnft' of http://gitlab.zhengzai.tv/dongjingwei/liquidnet-bus-v1 into dev-zxlnft

parents e08aa858 becd92e8
......@@ -11,8 +11,9 @@ package com.liquidnet.service.galaxy.constant;
*/
public class GalaxyConstant {
public static final String REDIS_KET_GALAXY_USER="galaxy:user:";
public static final String REDIS_KET_GALAXY_ART_SERIES="galaxy:series:";
public static final String SERIES_STORE_NAME="NOW_ZXL_NFT_PIC";// 系列存储目录名称
public static final String REDIS_KET_GALAXY_SERIES="galaxy:series:";
public static final String SERIES_NAME_PREFIX="NOW_ZXL_";// 系列存储目录名称和系列声明
public enum RouterTypeEnum{
ZXINCHAIN("zxinchain","至信链"),
......@@ -31,6 +32,26 @@ public class GalaxyConstant {
}
}
/**
* 路由业务枚举
*/
public enum SeriesClaimStatusEnum{
PROCESSING("processing","系列声明中"),
SUCCESS ("success","系列声明成功"),
FAIL ("fail","系列声明失败");
private String code;
private String message;
SeriesClaimStatusEnum(String code, String message) {
this.code = code;
this.message = message;
}
public String getCode() {
return code;
}
}
/**
* 路由业务枚举
*/
......
......@@ -10,7 +10,8 @@ package com.liquidnet.service.galaxy.constant;
* @date 2022/3/8 11:25
*/
public enum GalaxyErrorCodeEnum {
TRADE_PAY_WAY_ERROR("PAY0010001","错误的支付方式");
SERIES_CLAIM_ERROR("NFT0010001","NFT系列声明失败"),
SERIES_CLAIM_ERROR_FIVE_TIMES("NFT0010002","NFT系列声明失败,任务查询超过5次");
private String code;
private String message;
......
......@@ -16,10 +16,24 @@ import java.io.Serializable;
*/
@Data
public class GalaxySeriesInfoBo implements Serializable,Cloneable {
/**
* 本地系列唯一标识id
*/
private String skuId;
/**
* 系列名称
*/
private String seriesName;
/**
* 区块链上系列ID
*/
private String seriesId;
private Long totalCount;
private Long crtCount;
private String nftUrl;
private String publishStatus;
@Override
public String toString(){
......
package com.liquidnet.service.galaxy.dto.param;
import com.liquidnet.commons.lang.util.JsonUtils;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
......@@ -9,5 +16,33 @@ package com.liquidnet.service.galaxy.dto.param;
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2022/3/14 11:21
*/
public class GalaxyArtSeriesClaimRespDto {
@ApiModel(value = "GalaxyArtSeriesClaimRespDto", description = "NFT系列声明返回结果")
@Data
public class GalaxyArtSeriesClaimRespDto implements Serializable,Cloneable {
@ApiModelProperty(position = 1, required = true, value = "skuId")
private String skuId;
@ApiModelProperty(position = 2, required = true, value = "素材访问地址")
private String materialAccessUrl;
@ApiModelProperty(position = 3, required = true, value = "系列在区块链上唯一ID")
private String seriesId;
@ApiModelProperty(position = 3, required = true, value = "系列在区块链上的名称")
private String seriesName;
@Override
public String toString(){
return JsonUtils.toJson(this);
}
private static final GalaxyArtSeriesClaimRespDto obj = new GalaxyArtSeriesClaimRespDto();
public static GalaxyArtSeriesClaimRespDto getNew() {
try {
return (GalaxyArtSeriesClaimRespDto) obj.clone();
} catch (CloneNotSupportedException e) {
return new GalaxyArtSeriesClaimRespDto();
}
}
}
\ No newline at end of file
......@@ -21,7 +21,7 @@ public class GalaxyNftImageReqDto extends GalaxyBaseReqDto implements Serializab
/**
* 素材地址(全路径)
*/
private String imageUrl;
private String nftOriginalUrl;
@Override
public String toString(){
......
......@@ -20,11 +20,10 @@ import java.io.Serializable;
@Data
public class GalaxyNftUploadReqDto extends GalaxyBaseReqDto implements Serializable,Cloneable {
@ApiModelProperty(position = 1, required = true, value = "上传原始图片url")
private String imageUrl;
private String nftOriginalUrl;
@ApiModelProperty(position = 2, required = true, value = "商品唯一规格ID")
private String skuID;
private String skuId;
@Override
public String toString(){
......
......@@ -19,11 +19,13 @@ import java.io.Serializable;
@ApiModel(value = "GalaxyUserRegisterRespDto", description = "素材上传")
@Data
public class GalaxyNftUploadRespDto implements Serializable,Cloneable {
@ApiModelProperty(position = 1, required = true, value = "skuId")
private String skuId;
@ApiModelProperty(position = 1, required = true, value = "用户区块链类型")
private String blockChainType;
@ApiModelProperty(position = 2, required = true, value = "素材原始地址")
private String nftOriginalUrl;
@ApiModelProperty(position = 1, required = true, value = "素材访问地址")
@ApiModelProperty(position = 3, required = true, value = "素材访问地址")
private String materialAccessUrl;
......
......@@ -73,6 +73,17 @@ liquidnet:
host: 39.107.71.112
port: 6379
password: 3Xa%8p
redis-stream:
database: 255
host: 39.107.71.112
port: 6379
password: 3Xa%8p
galaxy:
dbs: 0,16
database: 15
host: 39.107.71.112
port: 6379
password: 3Xa%8p
# goblin:
# dbs: 0,256
# database: 255
......
......@@ -15,7 +15,11 @@ 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.base.ResponseDto;
import com.liquidnet.service.galaxy.constant.GalaxyConstant;
import com.liquidnet.service.galaxy.constant.GalaxyErrorCodeEnum;
import com.liquidnet.service.galaxy.dto.bo.GalaxySeriesInfoBo;
import com.liquidnet.service.galaxy.dto.param.*;
import com.liquidnet.service.galaxy.utils.DataUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
......@@ -52,6 +56,9 @@ public class ZxinArtworkBiz {
@Autowired
private ZxlnftConfig zxlnftConfig;
@Autowired
private DataUtils dataUtils;
@Value("${liquidnet.galaxy.temp-file-path:/Users/anjiabin/mdsky_gitlab/galaxy/tempFilePath}")
private String tempFilePath;
......@@ -71,9 +78,11 @@ public class ZxinArtworkBiz {
public ResponseDto<GalaxyNftUploadRespDto> nftUpload(GalaxyNftUploadReqDto reqDto) {
String imageUrl = reqDto.getImageUrl();
String seriesName = "NOW_ZXL_NFT_PIC_skuId002"; //系列名字 skuId
String filePath = "/Users/anjiabin/Downloads/myFileTemp/zxl_image_test_001.jpg";
String fileName = IDGenerator.getZxlNftImageCosCode() +".jpg";
//上传系列名只用来目录区分
String seriesName = GalaxyConstant.SERIES_NAME_PREFIX + reqDto.getSkuId(); //素材存储目录
String filePath = null;
String imageType = imageUrl.substring(imageUrl.lastIndexOf("."),imageUrl.length());
String fileName = IDGenerator.getZxlNftImageCosCode() + imageType;
//通过图片url地址上传
File cosFile = this.inputStreamToFile(reqDto.getImageUrl(),fileName);
......@@ -85,14 +94,6 @@ public class ZxinArtworkBiz {
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);
......@@ -127,8 +128,13 @@ public class ZxinArtworkBiz {
log.info("完整的素材访问fullFilePath url:{}",fullFilePath);
//进行系列声明
GalaxyNftUploadRespDto galaxyNftUploadRespDto = GalaxyNftUploadRespDto.getNew();
galaxyNftUploadRespDto.setMaterialAccessUrl(fullFilePath);
galaxyNftUploadRespDto.setSkuId(reqDto.getSkuId());
galaxyNftUploadRespDto.setImageUrl(reqDto.getImageUrl());
return ResponseDto.success(galaxyNftUploadRespDto);
// 1.4.4调用查询素材地址接口 -- 非必需
// Nft021UploadUrlReqDto nft021ReqDto = Nft021UploadUrlReqDto.getNew();
......@@ -140,64 +146,115 @@ public class ZxinArtworkBiz {
}
public ResponseDto<GalaxyArtSeriesClaimRespDto> seriesClaim(GalaxyArtSeriesClaimReqDto reqDto) {
String skuId = reqDto.getSkuId();
String seriesName = GalaxyConstant.SERIES_NAME_PREFIX.concat(skuId);
String nftUrl = reqDto.getCoverUrl();
Long totalCound = reqDto.getTotalCount();
String desc = reqDto.getDesc();
//返回参数
String seriesId = null;
String taskId = null;
GalaxySeriesInfoBo seriesInfoBo = dataUtils.getSeriesInfoBo(reqDto.getRouteType(),reqDto.getSkuId());
if(StringUtil.isNotNull(seriesInfoBo)){
/**
* 如果系列声明成功,则不允许继续声明
*/
if(seriesInfoBo.getPublishStatus().equalsIgnoreCase(GalaxyConstant.SeriesClaimStatusEnum.SUCCESS.getCode())){
GalaxyArtSeriesClaimRespDto seriesClaimRespDto = GalaxyArtSeriesClaimRespDto.getNew();
seriesClaimRespDto.setSkuId(seriesInfoBo.getSkuId());
seriesClaimRespDto.setMaterialAccessUrl(seriesInfoBo.getNftUrl());
seriesClaimRespDto.setSeriesId(seriesInfoBo.getSeriesId());
seriesClaimRespDto.setSeriesName(seriesInfoBo.getSeriesName());
return ResponseDto.success(seriesClaimRespDto);
}
}
/**
* 进行系列声明
*/
// Nft030SeriesClaimReqDto nft030ReqDto = Nft030SeriesClaimReqDto.getNew();
// nft030ReqDto.setPubKey(zxlnftConfig.getNftPlatformPubKey());
// nft030ReqDto.setSeriesName(seriesName);
// //无限制系列 设置为0
// nft030ReqDto.setTotalCount(0l);
// nft030ReqDto.setOperateId(IDGenerator.get32UUID());
// //系列封面
// nft030ReqDto.setCoverUrl("https://zhixinliantest-1302317679.cos.ap-guangzhou.myqcloud.com/nft/4e40d5f6f65aa8ec9bc33ab424e0167e68783bbe95d4d265086314d749808eef/ZXLNFTIMAGE202202241512003609141721.jpg");
// nft030ReqDto.setDesc("系列描述信息不超过500字符");
// nft030ReqDto.setMaxPublishCount(0);
// nft030ReqDto.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);
// }
return null;
Nft030SeriesClaimReqDto nft030ReqDto = Nft030SeriesClaimReqDto.getNew();
nft030ReqDto.setPubKey(zxlnftConfig.getNftPlatformPubKey());
nft030ReqDto.setSeriesName(seriesName);
//无限制系列 设置为0
nft030ReqDto.setTotalCount(totalCound);
nft030ReqDto.setOperateId(IDGenerator.get32UUID());
//系列封面
nft030ReqDto.setCoverUrl(nftUrl);
nft030ReqDto.setDesc(desc);
nft030ReqDto.setMaxPublishCount(0);
nft030ReqDto.setSeriesBeginFromZero(false);
ZxlnftResponseDto<Nft030SeriesClaimRespDto> nft30RespDto = zxlnftSdkUtil.nft030SeriesClaim(nft030ReqDto);
//{"taskId":"49d1cccc-e62c-40bc-923c-bfac31325351_nft-series-claim_1"}
if(nft30RespDto.isSuccess()){
//系列声明结果查询
Nft031SeriesClaimResultReqDto nft031ReqDto = Nft031SeriesClaimResultReqDto.getNew();
//第零个系列 无限制系列
taskId = nft30RespDto.getData().getTaskId();
nft031ReqDto.setTaskId(taskId);
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());
return ResponseDto.failure(GalaxyErrorCodeEnum.SERIES_CLAIM_ERROR.getCode(),GalaxyErrorCodeEnum.SERIES_CLAIM_ERROR.getMessage());
}
if(count==5){
log.info("=======查询共5次,跳出循环!taskId:{}",nft031ReqDto.getTaskId());
return ResponseDto.failure(GalaxyErrorCodeEnum.SERIES_CLAIM_ERROR_FIVE_TIMES.getCode(),GalaxyErrorCodeEnum.SERIES_CLAIM_ERROR_FIVE_TIMES.getMessage());
}
}
log.info("系列声明结果查询 seriesId :{}",seriesId);
}
GalaxyArtSeriesClaimRespDto seriesClaimRespDto = GalaxyArtSeriesClaimRespDto.getNew();
seriesClaimRespDto.setSkuId(skuId);
seriesClaimRespDto.setMaterialAccessUrl(nftUrl);
seriesClaimRespDto.setSeriesId(seriesId);
seriesClaimRespDto.setSeriesName(seriesName);
//构造缓存数据
if(seriesInfoBo==null){
this.buildSeriesInfoBo(skuId,seriesName,seriesId,totalCound,0l,nftUrl,nftUrl);
dataUtils.setSeriesInfoBo(reqDto.getRouteType(),reqDto.getSkuId(),seriesInfoBo);
}
return ResponseDto.success(seriesClaimRespDto);
}
private GalaxySeriesInfoBo buildSeriesInfoBo(String skuId,String seriesName,String seriesId,Long totalCount,Long crtCount,String nftUrl,String imageUrl){
GalaxySeriesInfoBo seriesInfoBo = GalaxySeriesInfoBo.getNew();
seriesInfoBo.setSkuId(skuId);
seriesInfoBo.setSeriesName(seriesName);
seriesInfoBo.setSeriesId(seriesId);
seriesInfoBo.setTotalCount(totalCount);
seriesInfoBo.setCrtCount(crtCount);
if(StringUtil.isEmpty(seriesId)){
seriesInfoBo.setPublishStatus(GalaxyConstant.SeriesClaimStatusEnum.PROCESSING.getCode());
}else{
seriesInfoBo.setPublishStatus(GalaxyConstant.SeriesClaimStatusEnum.SUCCESS.getCode());
}
seriesInfoBo.setNftUrl(nftUrl);
return seriesInfoBo;
}
/**
* 大美 通过URL上传
*
* 通过URL上传
* @param url
* @param name
* @return
......
......@@ -39,12 +39,13 @@ public class DataUtils {
}
}
public void setSeriesInfoBo(String routeType,String userId, GalaxyUserInfoBo userInfoBo) {
redisUtil.set(GalaxyConstant.REDIS_KET_GALAXY_USER.concat(routeType).concat(":") + userId,userInfoBo,keyExpireTime);
public void setSeriesInfoBo(String routeType,String skuId, GalaxySeriesInfoBo seriesInfoBo) {
redisUtil.set(GalaxyConstant.REDIS_KET_GALAXY_SERIES.concat(routeType).concat(":") + skuId,seriesInfoBo,keyExpireTime);
mongoTemplate.save(seriesInfoBo,GalaxySeriesInfoBo.class.getSimpleName());
}
public GalaxySeriesInfoBo getSeriesInfoBo(String routeType, String skuId) {
Object obj = redisUtil.get(GalaxyConstant.REDIS_KET_GALAXY_ART_SERIES.concat(routeType).concat(":") + skuId);
Object obj = redisUtil.get(GalaxyConstant.REDIS_KET_GALAXY_SERIES.concat(routeType).concat(":") + skuId);
if(obj!=null){
return (GalaxySeriesInfoBo) obj;
}else {
......@@ -52,7 +53,7 @@ public class DataUtils {
if (seriesInfoBo == null) {
return null;
}
redisUtil.set(GalaxyConstant.REDIS_KET_GALAXY_ART_SERIES.concat(routeType).concat(":") + skuId, seriesInfoBo);
redisUtil.set(GalaxyConstant.REDIS_KET_GALAXY_SERIES.concat(routeType).concat(":") + skuId, seriesInfoBo);
return seriesInfoBo;
}
}
......
......@@ -26,6 +26,13 @@ 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();
......
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