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

Commit 2a53f70e authored by anjiabin's avatar anjiabin

nft修改购买逻辑

parent ebe30d8b
......@@ -290,7 +290,7 @@ public class MQConst {
SQL_NFT_ORDER_INFO("galaxy:stream:rk.sql.nftOrderInfo", "group.sql.nftOrderInfo", "订单信息"),
SQL_NFT_TRADE_INFO("galaxy:stream:rk.sql.nftTradeInfo", "group.sql.nftTradeInfo", "交易信息"),
// JSON_NFT_PUBLISH_AND_BUY("galaxy:stream:rk.json.nftPublishAndBuy", "group.sql.nftPublishAndBuy", "NFT发行和购买"),
JSON_NFT_PUBLISH_AND_BUY("galaxy:stream:rk.json.nftPublishAndBuyLocal", "group.sql.nftPublishAndBuyLocal", "NFT发行和购买"),
JSON_NFT_PUBLISH_AND_BUY("galaxy:stream:rk.json.nftPublishAndBuy", "group.sql.nftPublishAndBuy", "NFT发行和购买"),
;
private final String key;
private final String group;
......
......@@ -73,6 +73,17 @@
<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>
<exclusions>
<exclusion>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-common-web</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
......
package com.liquidnet.service.consumer.kylin.service.processor;
import com.liquidnet.common.exception.LiquidnetServiceException;
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.ZxlnftSdkUtil;
import com.liquidnet.commons.lang.util.BASE64Util;
import com.liquidnet.commons.lang.util.BeanUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.commons.lang.util.StringUtil;
import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.consumer.kylin.utils.DataUtils;
import com.liquidnet.service.galaxy.biz.GalaxyBeanTransferBiz;
import com.liquidnet.service.galaxy.biz.GalaxyEnumBiz;
import com.liquidnet.service.galaxy.constant.GalaxyErrorEnum;
import com.liquidnet.service.galaxy.dto.bo.GalaxyNftOrderBindBo;
import com.liquidnet.service.galaxy.dto.bo.GalaxyNftOrderBo;
import com.liquidnet.service.galaxy.dto.bo.GalaxySeriesNftInfoBo;
import com.liquidnet.service.galaxy.dto.bo.GalaxyUserInfoBo;
......@@ -24,7 +23,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
......@@ -50,6 +50,9 @@ public class ConsumerJsonNftPublishAndBuyProcessor {
@Autowired
private DataUtils dataUtils;
@Autowired
private GalaxyBeanTransferBiz galaxyBeanTransferBiz;
public ResponseDto<GalaxyNftPublishAndBuyRespDto> nftPublishAndBuy(GalaxyNftPublishAndBuyReqDto reqDto) {
//获取订单信息
GalaxyNftOrderBo nftOrderBo = dataUtils.getNftOrderBo(reqDto.getRouterType(),reqDto.getNftOrderPayId());
......@@ -57,13 +60,38 @@ public class ConsumerJsonNftPublishAndBuyProcessor {
return ResponseDto.failure(GalaxyErrorEnum.PUBLISH_FAIL_ALREADY_EXIST.getCode(), GalaxyErrorEnum.PUBLISH_FAIL_ALREADY_EXIST.getMessage());
}
//获取用户信息
GalaxyUserInfoBo userInfoBo = dataUtils.getGalaxyUserInfo(reqDto.getRouterType(),reqDto.getUserId());
//获取sku信息
GalaxySeriesNftInfoBo seriesNftInfoBo = dataUtils.getSeriesNftInfoBo(reqDto.getRouterType(),reqDto.getSkuId());
//初始化订单数据
if(nftOrderBo==null){
nftOrderBo = galaxyBeanTransferBiz.buildNftOrderBo(reqDto.getNftOrderPayId(),userInfoBo,seriesNftInfoBo);
dataUtils.setNftOrderBo(reqDto.getRouterType(),reqDto.getNftOrderPayId(),nftOrderBo);
}
/**
* 获取订单和nft绑定信息
*/
GalaxyNftOrderBindBo nftOrderBindBo = dataUtils.getGalaxyNftOrderBindBo(reqDto.getRouterType(),reqDto.getNftOrderPayId());
if(StringUtil.isNull(nftOrderBindBo)){
//获取发行索引
long nftIdNo = dataUtils.incrNftIdNo(reqDto.getRouterType(),reqDto.getSkuId());
nftOrderBindBo = GalaxyNftOrderBindBo.getNew();
nftOrderBindBo.setNftOrderPayId(reqDto.getNftOrderPayId());
nftOrderBindBo.setSeriesId(seriesNftInfoBo.getSeriesId());
nftOrderBindBo.setSeriesCode(seriesNftInfoBo.getSeriesCode());
nftOrderBindBo.setNftIdIndex(Integer.valueOf(String.valueOf(nftIdNo)));
nftOrderBindBo.setRouterType(reqDto.getRouterType());
String nowTimeStr = DateUtil.Formatter.yyyyMMddHHmmss.format(LocalDateTime.now());
nftOrderBindBo.setCreatedAt(nowTimeStr);
dataUtils.setGalaxyNftOrderBindBo(reqDto.getRouterType(),reqDto.getNftOrderPayId(),nftOrderBindBo);
}
String author = seriesNftInfoBo.getAuthor();
String nftName = seriesNftInfoBo.getNftName();
String nftUrl = seriesNftInfoBo.getNftUrl();
......@@ -74,29 +102,33 @@ public class ConsumerJsonNftPublishAndBuyProcessor {
//发行个数
Long publishCount = 1L;
//开始索引
Integer seriesBeginIndex = 0;
Integer seriesBeginIndex = nftOrderBindBo.getNftIdIndex();
//发行金额
Long sellCount = Long.valueOf(seriesNftInfoBo.getSellCount().multiply(BigDecimal.valueOf(100l)).longValue()); //积分
Long sellCount = seriesNftInfoBo.getSellCount().longValue(); //积分
/**
* 根据sku获取系列Id
*/
String seriesId = seriesNftInfoBo.getSkuId();
String seriesId = seriesNftInfoBo.getSeriesId();
//返回参数nftId
String nftId = null;
String publishTaskId = null;
Long nftPublishChainTimestamp = null;
Integer nftPublishStatus = null;
String nftPublishTradeHash = null;
//查询系列信息
Nft032SeriesReqDto nft032ReqDto = Nft032SeriesReqDto.getNew();
nft032ReqDto.setSeriesId(seriesId);
ZxlnftResponseDto<Nft032SeriesRespDto> resp = zxlnftSdkUtil.nft032Series(nft032ReqDto);
if(!resp.isSuccess()){
//该系列已经发行多少个nft
Long crtCount = resp.getData().getSeriesInfo().getCrtCount();
log.info("系列:{} 已发行 :{}", seriesId, crtCount);
//设置开始索引
seriesBeginIndex = Integer.parseInt(String.valueOf(crtCount.longValue() + 1));
}
// //查询系列信息(暂时不通过系列查询获取发行序列号)
// Nft032SeriesReqDto nft032ReqDto = Nft032SeriesReqDto.getNew();
// nft032ReqDto.setSeriesId(seriesId);
// ZxlnftResponseDto<Nft032SeriesRespDto> resp = zxlnftSdkUtil.nft032Series(nft032ReqDto);
//
// if(resp.isSuccess()){
// //该系列已经发行多少个nft
// Long crtCount = resp.getData().getSeriesInfo().getCrtCount();
// log.info("系列:{} 已发行 :{}", seriesId, crtCount);
// //设置开始索引
// seriesBeginIndex = Integer.parseInt(String.valueOf(crtCount.longValue() + 1));
// }
//3.1.2调用NFT发行接口
/**
......@@ -121,82 +153,86 @@ public class ConsumerJsonNftPublishAndBuyProcessor {
ZxlnftResponseDto<Nft034PublishRespDto> nft034RespDto = zxlnftSdkUtil.nft034Publish(nft034ReqDto);
if (nft034RespDto.isSuccess()) {
publishTaskId = nft034RespDto.getData().getTaskId();
//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);
nft035ReqDto.setTaskId(publishTaskId);
if (nft035RespDto.isSuccess()) {
if (nft035RespDto.getData().getTaskStatus().toString().equals(ZxlnftEnum.TaskStatusEnum.TASK_FAIL.getCode())) {
log.info("任务执行失败!taskId:{} taskMsg:{}", nft035ReqDto.getTaskId(), nft035RespDto.getData().getTaskMsg());
return null;
int count = 0;
String nftIdBegin = null;
long timeStart = System.currentTimeMillis();
while (StringUtil.isEmpty(nftIdBegin)) {
//休眠1秒钟,等待执行结果
try {
Thread.sleep(1000l);
} catch (InterruptedException e) {
e.printStackTrace();
}
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 null;
}
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());
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();
nftPublishChainTimestamp = nft035RespDtoTemp.getData().getChainTimestamp();
nftPublishStatus = nft035RespDtoTemp.getData().getTaskStatus();
nftPublishTradeHash = nft035RespDtoTemp.getData().getTxHash();
} else if (nft035RespDtoTemp.getData().getTaskStatus().toString().equals(ZxlnftEnum.TaskStatusEnum.TASK_FAIL.getCode())) {
log.info("任务执行失败!taskId:{}", nft035ReqDto.getTaskId());
return null;
}
log.info("发行NFT后返回给前端nftID:{}", nftIdBegin);
log.info("总共执行了{}次查询 总耗时:{} MS", count, (System.currentTimeMillis() - timeStart));
if (StringUtil.isNotEmpty(nftIdBegin)) {
nftId = nftIdBegin;
//3.1.3调用NFT查询接口
Nft036InfoReqDto nft036ReqDto = Nft036InfoReqDto.getNew();
nft036ReqDto.setNftId(nftIdBegin);
ZxlnftResponseDto<Nft036InfoRespDto> nft036RespDto = zxlnftSdkUtil.nft036Info(nft036ReqDto);
log.info("调用NFT查询接口 : {}", nft036RespDto.toJson());
if (count == 5) {
log.info("=======查询共5次,跳出循环!taskId:{}", nft035ReqDto.getTaskId());
break;
}
}
//赋值返回参数
nftId = nftIdBegin;
log.info("发行NFT后返回给前端nftID:{}", nftIdBegin);
log.info("总共执行了{}次查询 总耗时:{} MS", count, (System.currentTimeMillis() - timeStart));
}
//更新订单缓存数据状态
nftOrderBo.setNftId(nftId);
nftOrderBo.setNftPublishTaskId(publishTaskId);
//设置时间
String nftPublishChainTimestampStr = DateUtil.format(new Date(nftPublishChainTimestamp*1000),DateUtil.Formatter.yyyyMMddHHmmss);
//转换任务状态
String nftPublishStatusStr = GalaxyEnumBiz.getTaskStatusEnum(reqDto.getRouterType(),nftPublishStatus.toString()).getCode();
nftOrderBo.setNftPublishChainTimestamp(nftPublishChainTimestampStr);
nftOrderBo.setNftPublishStatus(nftPublishStatusStr);
nftOrderBo.setNftPublishTradeHash(nftPublishTradeHash);
nftOrderBo.setUpdatedAt(LocalDateTime.now());
//先更新nft发行数据
dataUtils.updateNftOrderPublishInfo(reqDto.getRouterType(),reqDto.getNftOrderPayId(),nftOrderBo);
if(StringUtil.isNotEmpty(nftId)){
//执行购买逻辑
GalaxyNftPublishAndBuyRespDto nftPublishAndBuyRespDto = GalaxyNftPublishAndBuyRespDto.getNew();
GalaxyNftBuyRespDto nftBuyRespDto = this.nftBuyBusiness(reqDto.getRouterType(),nftId,userInfoBo,seriesNftInfoBo,nftOrderBo);
GalaxyNftBuyRespDto nftBuyRespDto = this.nftBuyBusinessSync(reqDto.getRouterType(),nftId,userInfoBo,seriesNftInfoBo,nftOrderBo);
BeanUtil.copy(nftBuyRespDto,nftPublishAndBuyRespDto);
return ResponseDto.success(nftPublishAndBuyRespDto);
}else{
return ResponseDto.failure(GalaxyErrorEnum.PUBLISH_FAIL.getCode(), GalaxyErrorEnum.PUBLISH_FAIL.getMessage());
}
}
/**
* 保持线程循环查询
* @param nftId
* @param userInfoBo
* @param seriesNftInfoBo
* @return
*/
private GalaxyNftBuyRespDto nftBuyBusinessSync(String routerType,String nftId,GalaxyUserInfoBo userInfoBo, GalaxySeriesNftInfoBo seriesNftInfoBo,GalaxyNftOrderBo nftOrderBo){
//定义返回参数
String nftBuyTaskId = null;
Long nftBuyChainTimestamp = null;
Integer nftBuyStatus = null;
String nftBuyTradeHash = null;
String nftBuyPayTaskId = null;
private GalaxyNftBuyRespDto nftBuyBusiness(String routerType,String nftId,GalaxyUserInfoBo userInfoBo, GalaxySeriesNftInfoBo seriesNftInfoBo,GalaxyNftOrderBo nftOrderBo){
// 3.2.2调用购买NFT接口
Nft043BuyReqDto nft043BuyReqDto = Nft043BuyReqDto.getNew();
nft043BuyReqDto.setNftId(nftId);
......@@ -230,17 +266,62 @@ public class ConsumerJsonNftPublishAndBuyProcessor {
}
nft043BuyReqDto.setSignature(signature);
String nftBuyTaskId = null;
ZxlnftResponseDto<Nft043BuyRespDto> nft043RespDto = zxlnftSdkUtil.nft043Buy(nft043BuyReqDto);
if(nft043RespDto.isSuccess()){
nftBuyTaskId = nft043RespDto.getData().getTaskId();
}else{
throw new LiquidnetServiceException(nft043RespDto.getCode(),nft043RespDto.getMessage());
}
//3.2.4查询NFT购买结果
Nft044BuyResultReqDto nft044ReqDto = Nft044BuyResultReqDto.getNew();
nft044ReqDto.setTaskId(nftBuyTaskId);
long timeStart = System.currentTimeMillis();
int count = 1;
while(nftBuyPayTaskId == null){
try {
Thread.sleep(1000l);
} catch (InterruptedException e) {
e.printStackTrace();
}
count++;
log.info("=======执行第{}次查询,taskId:{}",1,nft044ReqDto.getTaskId());
ZxlnftResponseDto<Nft044BuyResultRespDto> nft044RespDto = zxlnftSdkUtil.nft044BuyResult(nft044ReqDto);
if(nft044RespDto.getData().getTaskStatus().toString().equals(ZxlnftEnum.TaskStatusEnum.TASK_SUCCESS.getCode())){
nftBuyPayTaskId = nft044RespDto.getData().getPayTaskId();
nftBuyChainTimestamp = nft044RespDto.getData().getChainTimestamp();
nftBuyStatus = nft044RespDto.getData().getTaskStatus();
nftBuyTradeHash = nft044RespDto.getData().getTxHash();
}else if(nft044RespDto.getData().getTaskStatus().toString().equals(ZxlnftEnum.TaskStatusEnum.TASK_FAIL.getCode())){
log.info("任务执行失败!taskId:{}",nft044ReqDto.getTaskId());
return null;
}
//更新缓存数据状态
nftOrderBo.setNftBuyTaskId(nftBuyTaskId);
dataUtils.updateNftOrderBuyTaskId(routerType,nftOrderBo.getNftOrderPayId(),nftOrderBo);
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);
// }
//更新订单缓存数据状态
nftOrderBo.setNftBuyTaskId(nftBuyTaskId);
//设置时间
String nftBuyChainTimestampStr = DateUtil.format(new Date(nftBuyChainTimestamp*1000),DateUtil.Formatter.yyyyMMddHHmmss);
//转换任务状态
String nftBuyStatusStr = GalaxyEnumBiz.getTaskStatusEnum(routerType,nftBuyStatus.toString()).getCode();
nftOrderBo.setNftBuyChainTimestamp(nftBuyChainTimestampStr);
nftOrderBo.setNftBuyStatus(nftBuyStatusStr);
nftOrderBo.setNftBuyTradeHash(nftBuyTradeHash);
nftOrderBo.setNftBuyPayTaskId(nftBuyPayTaskId);
nftOrderBo.setUpdatedAt(LocalDateTime.now());
//先更新nft发行数据
dataUtils.updateNftOrderBuyInfo(routerType,nftOrderBo.getNftOrderPayId(),nftOrderBo);
}
GalaxyNftBuyRespDto nftBuyRespDto = GalaxyNftBuyRespDto.getNew();
nftBuyRespDto.setUserId(userInfoBo.getUserId());
......
package com.liquidnet.service.consumer.kylin.utils;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.BeanUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.galaxy.constant.GalaxyConstant;
import com.liquidnet.service.galaxy.dto.bo.GalaxyNftOrderBo;
import com.liquidnet.service.galaxy.dto.bo.GalaxySeriesNftInfoBo;
import com.liquidnet.service.galaxy.dto.bo.GalaxyUserInfoBo;
import com.liquidnet.service.galaxy.dto.vo.mongo.GalaxyNftOrderVo;
import com.liquidnet.service.galaxy.dto.vo.mongo.GalaxySeriesNftInfoVo;
import com.liquidnet.service.galaxy.dto.vo.mongo.GalaxyUserInfoVo;
import com.mongodb.client.result.UpdateResult;
import com.liquidnet.service.galaxy.utils.AbstractDataUtils;
import com.liquidnet.service.galaxy.utils.QueueUtil;
import lombok.extern.slf4j.Slf4j;
import org.bson.Document;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
@Slf4j
@Component
public class DataUtils {
public class DataUtils extends AbstractDataUtils {
@Autowired
private RedisUtil redisUtil;
......@@ -39,76 +22,19 @@ public class DataUtils {
private long keyExpireTime = 3600*24*30;
public GalaxyUserInfoBo getGalaxyUserInfo(String routerType, String userId) {
Object obj = redisUtil.get(GalaxyConstant.REDIS_KEY_GALAXY_USER.concat(routerType).concat(":") + userId);
if(obj!=null){
return (GalaxyUserInfoBo) obj;
}else {
GalaxyUserInfoVo userInfoVo = mongoTemplate.findOne(Query.query(Criteria.where("userId").is(userId)), GalaxyUserInfoVo.class, GalaxyUserInfoVo.class.getSimpleName());
if (userInfoVo == null) {
return null;
}
GalaxyUserInfoBo userInfoBo = GalaxyUserInfoBo.getNew();
BeanUtil.copy(userInfoVo,userInfoBo);
redisUtil.set(GalaxyConstant.REDIS_KEY_GALAXY_USER.concat(routerType).concat(":") + userId, userInfoBo);
return userInfoBo;
}
}
public GalaxyNftOrderBo getNftOrderBo(String routerType, String nftOrderPayId) {
Object obj = redisUtil.get(GalaxyConstant.REDIS_KEY_GALAXY_TRADE.concat(routerType).concat(":") + nftOrderPayId);
if(obj!=null){
return (GalaxyNftOrderBo) obj;
}else {
GalaxyNftOrderVo nftOrderVo = mongoTemplate.findOne(Query.query(Criteria.where("nftOrderPayId").is(nftOrderPayId)), GalaxyNftOrderVo.class, GalaxyNftOrderVo.class.getSimpleName());
if (nftOrderVo == null) {
return null;
}
GalaxyNftOrderBo nftOrderBo = GalaxyNftOrderBo.getNew();
BeanUtil.copy(nftOrderVo,nftOrderBo);
redisUtil.set(GalaxyConstant.REDIS_KEY_GALAXY_TRADE.concat(routerType).concat(":") + nftOrderPayId, nftOrderBo);
return nftOrderBo;
}
@Override
public RedisUtil getRedisUtil() {
return redisUtil;
}
public GalaxySeriesNftInfoBo getSeriesNftInfoBo(String routerType, String skuId) {
Object obj = redisUtil.get(GalaxyConstant.REDIS_KEY_GALAXY_SERIES_NFT.concat(routerType).concat(":") + skuId);
if(obj!=null){
return (GalaxySeriesNftInfoBo) obj;
}else {
GalaxySeriesNftInfoVo seriesNftInfoVo = mongoTemplate.findOne(Query.query(Criteria.where("skuId").is(skuId)), GalaxySeriesNftInfoVo.class, GalaxySeriesNftInfoVo.class.getSimpleName());
if (seriesNftInfoVo == null) {
return null;
}
GalaxySeriesNftInfoBo seriesNftInfoBo = GalaxySeriesNftInfoBo.getNew();
BeanUtil.copy(seriesNftInfoVo,seriesNftInfoBo);
redisUtil.set(GalaxyConstant.REDIS_KEY_GALAXY_SERIES_NFT.concat(routerType).concat(":") + skuId, seriesNftInfoBo);
return seriesNftInfoBo;
}
@Override
public MongoTemplate getMongoTemplate() {
return mongoTemplate;
}
public void updateNftOrderBuyTaskId(String routerType,String nftOrderPayId,GalaxyNftOrderBo nftOrderBo) {
redisUtil.set(GalaxyConstant.REDIS_KEY_GALAXY_TRADE.concat(routerType).concat(":") + nftOrderPayId,nftOrderBo,keyExpireTime);
Query query = Query.query(Criteria.where("nftOrderPayId").is(nftOrderPayId));
Update update = Update.fromDocument(Document.parse(JsonUtils.toJson(nftOrderBo)));
update.set("nftBuyTaskId", nftOrderBo.getNftBuyTaskId());
String nowTimeStr = DateUtil.Formatter.yyyyMMddHHmmss.format(LocalDateTime.now());
update.set("updatedAt",nowTimeStr);
UpdateResult result = mongoTemplate.updateFirst(query,update, GalaxyNftOrderVo.class,GalaxyNftOrderVo.class.getSimpleName());
log.info("updateNftOrderInfo result:{}",result.toString());
try{
queueUtil.sendMySqlRedis(
SqlMapping.get("galaxy_nft_order_info.updateNftBuyTaskId"),
new Object[]{nftOrderBo.getNftBuyTaskId(),LocalDateTime.now(),nftOrderBo.getNftOrderPayId()}
, MQConst.GalaxyQueue.SQL_NFT_TRADE_INFO.getKey()
);
}catch(Exception e){
log.error(e.getMessage(),e);
log.error("#setNftTradeInfo error ==> MESSAGE:{}",e.getMessage());
}
@Override
public com.liquidnet.service.galaxy.utils.QueueUtil getQueueUtil() {
return queueUtil;
}
}
package com.liquidnet.service.consumer.kylin.utils;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.galaxy.utils.ObjectUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.stream.MapRecord;
import org.springframework.data.redis.connection.stream.StreamRecords;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.LinkedList;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: QueueUtil
* @Package com.liquidnet.service.galaxy.utils
* @Copyright: LightNet @ Copyright (c) 2022
* @date 2022/3/25 15:35
*/
@Component
public class QueueUtil {
@Autowired
StringRedisTemplate stringRedisTemplate;
/**
* 给 REDIS 队列发送消息 数据库相关
*
* @param sql sql语句
* @param data 需要操作的数据
* @return
*/
public boolean sendMySqlRedis(String sql, Object[] data , String redisKey) {
try {
LinkedList<String> sqls = ObjectUtil.cloneLinkedListStr();
sqls.add(sql);
LinkedList<Object[]> sqlsData = ObjectUtil.cloneLinkedListObj();
sqlsData.add(data);
String sqlData = SqlMapping.gets(sqls, sqlsData);
HashMap<String, String> map = ObjectUtil.cloneHashMapStringAndString();
map.put("message", sqlData);
MapRecord<String, String, String> record = StreamRecords.mapBacked(map).withStreamKey(redisKey);
stringRedisTemplate.opsForStream().add(record);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
}
......@@ -17,7 +17,6 @@
<module>liquidnet-service-consumer-sweet</module>
<module>liquidnet-service-consumer-stone</module>
<module>liquidnet-service-consumer-candy</module>
<module>liquidnet-service-consumer-galaxy</module>
</modules>
<dependencies>
......
<?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-common</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>
</dependencies>
</project>
package com.liquidnet.service.galaxy.router.zxin.biz;
package com.liquidnet.service.galaxy.biz;
import com.liquidnet.common.third.zxlnft.config.ZxlnftConfig;
import com.liquidnet.service.galaxy.dto.bo.GalaxyNftOrderBo;
......@@ -14,18 +14,18 @@ import java.time.LocalDateTime;
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: ZxinCommonBiz
* @Package com.liquidnet.service.galaxy.router.zxin.biz
* @class: GalaxyCommonBiz
* @Package com.liquidnet.service.galaxy.router.strategy.biz
* @Copyright: LightNet @ Copyright (c) 2022
* @date 2022/3/30 17:51
* @date 2022/3/23 11:20
*/
@Slf4j
@Component
public class ZxinCommonBiz {
public class GalaxyBeanTransferBiz {
@Autowired
private ZxlnftConfig zxlnftConfig;
public GalaxyNftOrderBo buildNftOrderBo(String nftOrderPayId,GalaxyUserInfoBo userInfoBo, GalaxySeriesNftInfoBo seriesNftInfoBo){
public GalaxyNftOrderBo buildNftOrderBo(String nftOrderPayId, GalaxyUserInfoBo userInfoBo, GalaxySeriesNftInfoBo seriesNftInfoBo){
GalaxyNftOrderBo nftOrderBo = GalaxyNftOrderBo.getNew();
nftOrderBo.setUserId(userInfoBo.getUserId());
nftOrderBo.setSkuId(seriesNftInfoBo.getSkuId());
......
package com.liquidnet.service.galaxy.router.strategy.biz;
package com.liquidnet.service.galaxy.biz;
import com.liquidnet.common.third.antchain.constant.AntchainEnum;
import com.liquidnet.common.third.zxlnft.constant.ZxlnftEnum;
......@@ -17,7 +17,7 @@ public class GalaxyEnumBiz {
/**
* 任务状态转换
* @param routerTypeEnum
* @param routerType
* @param code
* @return
*/
......
package com.liquidnet.service.galaxy.utils;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.galaxy.constant.GalaxyConstant;
import com.liquidnet.service.galaxy.constant.GalaxyEnum;
import com.liquidnet.service.galaxy.dto.bo.*;
import com.liquidnet.service.galaxy.dto.vo.mongo.*;
import com.mongodb.client.result.UpdateResult;
import lombok.extern.slf4j.Slf4j;
import org.bson.Document;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j
public abstract class AbstractDataUtils {
public abstract RedisUtil getRedisUtil();
public abstract MongoTemplate getMongoTemplate();
public abstract QueueUtil getQueueUtil();
private long keyExpireTime = 3600*24*30;
public void setGalaxyUserInfo(String routerType,String userId, GalaxyUserInfoBo userInfoBo) {
String userType = GalaxyEnum.RegisterTypeEnum.COMPANY.getCode();
this.getRedisUtil().set(GalaxyConstant.REDIS_KEY_GALAXY_USER.concat(routerType).concat(":") + userId,userInfoBo,keyExpireTime);
//入库mongo
GalaxyUserInfoVo userInfoVo = GalaxyUserInfoVo.getNew();
BeanUtil.copy(userInfoBo,userInfoVo);
userInfoVo.setCreatedAt(LocalDateTime.now());
this.getMongoTemplate().save(userInfoVo,GalaxyUserInfoVo.class.getSimpleName());
// insert into galaxy_user_info (mid, user_id, user_name, user_type, mobile, id_card_type
// , id_card, mnemonic, index,user_identification, user_pub_key
// , user_pri_key, block_chain_address, router_type,created_at, updated_at)
try{
this.getQueueUtil().sendMySqlRedis(
SqlMapping.get("galaxy_user_info.insert"),
new Object[]{userId,userInfoBo.getUserName(),userType,userInfoBo.getMobile(),userInfoBo.getIdCardType()
,userInfoBo.getIdCard(),userInfoBo.getMnemonic(),userInfoBo.getIndex(),userInfoBo.getUserIdentification(),userInfoBo.getUserPubKey()
,userInfoBo.getUserPriKey(),userInfoBo.getBlockChainAddress(),userInfoBo.getRouterType(),new Date(),null
}
, MQConst.GalaxyQueue.SQL_USER_INFO.getKey()
);
}catch(Exception e){
log.error(e.getMessage(),e);
log.error("#setGalaxyUserInfo error ==> MESSAGE:{}",e.getMessage());
}
}
public GalaxyUserInfoBo getGalaxyUserInfo(String routerType,String userId) {
Object obj = this.getRedisUtil().get(GalaxyConstant.REDIS_KEY_GALAXY_USER.concat(routerType).concat(":") + userId);
if(obj!=null){
return (GalaxyUserInfoBo) obj;
}else {
GalaxyUserInfoVo userInfoVo = this.getMongoTemplate().findOne(Query.query(Criteria.where("userId").is(userId)), GalaxyUserInfoVo.class, GalaxyUserInfoVo.class.getSimpleName());
if (userInfoVo == null) {
return null;
}
GalaxyUserInfoBo userInfoBo = GalaxyUserInfoBo.getNew();
BeanUtil.copy(userInfoVo,userInfoBo);
this.getRedisUtil().set(GalaxyConstant.REDIS_KEY_GALAXY_USER.concat(routerType).concat(":") + userId, userInfoBo);
return userInfoBo;
}
}
public void setSeriesNftUploadBo(String routerType,String skuId, GalaxySeriesNftUploadBo seriesNftUploadBo) {
this.getRedisUtil().set(GalaxyConstant.REDIS_KEY_GALAXY_SERIES_NFT_UPLOAD.concat(routerType).concat(":") + skuId,seriesNftUploadBo,keyExpireTime);
//mongo入库
GalaxySeriesNftUploadVo seriesNftUploadVo = GalaxySeriesNftUploadVo.getNew();
BeanUtil.copy(seriesNftUploadBo,seriesNftUploadVo);
seriesNftUploadVo.setCreatedAt(LocalDateTime.now());
this.getMongoTemplate().save(seriesNftUploadVo,GalaxySeriesNftUploadVo.class.getSimpleName());
}
public GalaxySeriesNftUploadBo getSeriesNftUploadBo(String routerType,String skuId) {
Object obj = this.getRedisUtil().get(GalaxyConstant.REDIS_KEY_GALAXY_SERIES_NFT_UPLOAD.concat(routerType).concat(":") + skuId);
if(obj!=null){
return (GalaxySeriesNftUploadBo) obj;
}else {
//设置查询参数
Criteria criteria = Criteria.where("routerType").is(routerType);
String userId = CurrentUtil.getCurrentUid();
if(StringUtil.isNotEmpty(skuId)){
criteria = criteria.and("skuId").is(skuId);
}
GalaxySeriesNftUploadVo seriesNftUploadVo = this.getMongoTemplate().findOne(Query.query(criteria), GalaxySeriesNftUploadVo.class, GalaxySeriesNftUploadVo.class.getSimpleName());
if (seriesNftUploadVo == null) {
return null;
}
GalaxySeriesNftUploadBo seriesNftUploadBo = GalaxySeriesNftUploadBo.getNew();
BeanUtil.copy(seriesNftUploadVo,seriesNftUploadBo);
this.getRedisUtil().set(GalaxyConstant.REDIS_KEY_GALAXY_SERIES_NFT_UPLOAD.concat(routerType).concat(":") + skuId, seriesNftUploadBo);
return seriesNftUploadBo;
}
}
public void setSeriesInfoBo(String routerType,String seriesCode, GalaxySeriesInfoBo seriesInfoBo) {
this.getRedisUtil().set(GalaxyConstant.REDIS_KEY_GALAXY_SERIES.concat(routerType).concat(":") + seriesCode,seriesInfoBo,keyExpireTime);
// insert into galaxy_series_info (mid, series_info_id, series_name, series_code, series_id, total_count
// , crt_count,series_claim_task_id, series_claim_status, cover_url, series_desc
// , nft_count,router_type, created_at, updated_at)
Integer nftCount = 1;//默认为一个系列包含一个NFT
//mongo入库
GalaxySeriesInfoVo seriesInfoVo = GalaxySeriesInfoVo.getNew();
BeanUtil.copy(seriesInfoBo,seriesInfoVo);
seriesInfoVo.setCreatedAt(DateUtil.format(LocalDateTime.now(), DateUtil.Formatter.yyyyMMddHHmmss));
this.getMongoTemplate().save(seriesInfoVo,GalaxySeriesInfoVo.class.getSimpleName());
try{
this.getQueueUtil().sendMySqlRedis(
SqlMapping.get("galaxy_series_info.insert"),
new Object[]{seriesInfoBo.getSeriesInfoId(),seriesInfoBo.getSeriesName(),seriesCode,null,seriesInfoBo.getTotalCount()
,seriesInfoBo.getCrtCount(),seriesInfoBo.getSeriesClaimTaskId(),seriesInfoBo.getSeriesClaimStatus(),seriesInfoBo.getCoverUrl(),seriesInfoBo.getSeriesDesc()
,nftCount,seriesInfoBo.getRouterType(),LocalDateTime.now(),null
}
, MQConst.GalaxyQueue.SQL_SERIES_INFO.getKey()
);
}catch(Exception e){
log.error(e.getMessage(),e);
log.error("#setSeriesInfoBo error ==> MESSAGE:{}",e.getMessage());
}
}
public GalaxySeriesInfoBo getSeriesInfoBo(String routerType, String seriesCode) {
Object obj = this.getRedisUtil().get(GalaxyConstant.REDIS_KEY_GALAXY_SERIES.concat(routerType).concat(":") + seriesCode);
if(obj!=null){
return (GalaxySeriesInfoBo) obj;
}else {
GalaxySeriesInfoVo seriesInfoVo = this.getMongoTemplate().findOne(Query.query(Criteria.where("seriesCode").is(seriesCode)), GalaxySeriesInfoVo.class, GalaxySeriesInfoVo.class.getSimpleName());
if (seriesInfoVo == null) {
return null;
}
GalaxySeriesInfoBo seriesInfoBo = GalaxySeriesInfoBo.getNew();
BeanUtil.copy(seriesInfoVo,seriesInfoBo);
this.getRedisUtil().set(GalaxyConstant.REDIS_KEY_GALAXY_SERIES.concat(routerType).concat(":") + seriesCode, seriesInfoBo);
return seriesInfoBo;
}
}
public void setSeriesNftInfoBo(String routerType, String skuId, GalaxySeriesInfoBo seriesInfoBo, GalaxySeriesNftInfoBo seriesNftInfoBo) {
this.getRedisUtil().set(GalaxyConstant.REDIS_KEY_GALAXY_SERIES_NFT.concat(routerType).concat(":") + skuId,seriesNftInfoBo,keyExpireTime);
//初始化nft发行开始索引
this.getRedisUtil().set(GalaxyConstant.REDIS_KEY_GALAXY_PUBLISH_NFT.concat(routerType).concat(":").concat(skuId),seriesNftInfoBo.getNftIdBeginIndex());
//mongo入库
GalaxySeriesNftInfoVo seriesNftInfoVo = GalaxySeriesNftInfoVo.getNew();
BeanUtil.copy(seriesNftInfoBo,seriesNftInfoVo);
seriesNftInfoVo.setCreatedAt(LocalDateTime.now());
this.getMongoTemplate().save(seriesNftInfoVo,GalaxySeriesNftInfoVo.class.getSimpleName());
try{
// insert into galaxy_series_nft_info (mid, series_nft_info_id, series_info_id, sku_id, series_name, series_code
// ,series_id, nft_total_count, nft_crt_count,nft_id_begin,nft_id_begin_index,nft_publish_number,original_nft_url
// , original_display_url,author, nft_name, nft_url, display_url
// , nft_desc, nft_flag, sell_count, nft_hash,router_type
// , created_at, updated_at)
this.getQueueUtil().sendMySqlRedis(
SqlMapping.get("galaxy_series_nft_info.insert"),
new Object[]{seriesNftInfoBo.getSeriesNftInfoId(),seriesInfoBo.getSeriesInfoId(),skuId,seriesInfoBo.getSeriesName(),seriesInfoBo.getSeriesCode()
,seriesInfoBo.getSeriesId(),seriesNftInfoBo.getNftTotalCount(),seriesNftInfoBo.getNftCrtCount(),seriesNftInfoBo.getNftIdBegin(),seriesNftInfoBo.getNftIdBeginIndex(),seriesNftInfoBo.getNftPublishNumber(),seriesNftInfoBo.getOriginalNftUrl()
,seriesNftInfoBo.getOriginalDisplayUrl(),seriesNftInfoBo.getAuthor(),seriesNftInfoBo.getNftName(),seriesNftInfoBo.getNftUrl(),seriesNftInfoBo.getDisplayUrl()
,seriesNftInfoBo.getNftDesc(),seriesNftInfoBo.getNftFlag(),seriesNftInfoBo.getSellCount(),seriesNftInfoBo.getNftHash(),seriesInfoBo.getRouterType()
,LocalDateTime.now(),null
}
, MQConst.GalaxyQueue.SQL_SERIES_INFO.getKey());
}catch(Exception e){
log.error(e.getMessage(),e);
log.error("#setSeriesInfoBo error ==> MESSAGE:{}",e.getMessage());
}
}
public GalaxySeriesNftInfoBo getSeriesNftInfoBo(String routerType, String skuId) {
Object obj = this.getRedisUtil().get(GalaxyConstant.REDIS_KEY_GALAXY_SERIES_NFT.concat(routerType).concat(":") + skuId);
if(obj!=null){
return (GalaxySeriesNftInfoBo) obj;
}else {
GalaxySeriesNftInfoVo seriesNftInfoVo = this.getMongoTemplate().findOne(Query.query(Criteria.where("skuId").is(skuId)), GalaxySeriesNftInfoVo.class, GalaxySeriesNftInfoVo.class.getSimpleName());
if (seriesNftInfoVo == null) {
return null;
}
GalaxySeriesNftInfoBo seriesNftInfoBo = GalaxySeriesNftInfoBo.getNew();
BeanUtil.copy(seriesNftInfoVo,seriesNftInfoBo);
this.getRedisUtil().set(GalaxyConstant.REDIS_KEY_GALAXY_SERIES_NFT.concat(routerType).concat(":") + skuId, seriesNftInfoBo);
return seriesNftInfoBo;
}
}
public void updateSeriesClaimStatus(String routerType,String seriesCode, GalaxySeriesInfoBo seriesInfoBo) {
this.getRedisUtil().set(GalaxyConstant.REDIS_KEY_GALAXY_SERIES.concat(routerType).concat(":") + seriesCode,seriesInfoBo,keyExpireTime);
Query query = Query.query(Criteria.where("seriesCode").is(seriesInfoBo.getSeriesCode()));
Update update = Update.fromDocument(Document.parse(JsonUtils.toJson(seriesInfoBo)));
String nowTimeStr = DateUtil.Formatter.yyyyMMddHHmmss.format(LocalDateTime.now());
update.set("updatedAt",nowTimeStr);
UpdateResult result = this.getMongoTemplate().updateFirst(query,update, GalaxySeriesInfoVo.class,GalaxySeriesInfoVo.class.getSimpleName());
log.info("updateSeriesClaimStatus result:{}",result.toString());
try{
this.getQueueUtil().sendMySqlRedis(
SqlMapping.get("galaxy_series_info.updateSeriesIdAndStatus"),
new Object[]{seriesInfoBo.getSeriesId(),seriesInfoBo.getChainTimestamp(),seriesInfoBo.getTradeHash(),seriesInfoBo.getSeriesClaimStatus(),nowTimeStr,seriesInfoBo.getSeriesCode()}
, MQConst.GalaxyQueue.SQL_SERIES_INFO.getKey()
);
}catch(Exception e){
log.error(e.getMessage(),e);
log.error("#updateSeriesClaimStatus error ==> MESSAGE:{}",e.getMessage());
}
//更新系列对应的系列nft状态
List<String> skuIdList = this.getSkuIdListBySeriesCode(seriesCode);
skuIdList.stream().forEach(skuId -> {
GalaxySeriesNftInfoBo seriesNftInfoBo = this.getSeriesNftInfoBo(routerType,skuId);
seriesNftInfoBo.setSeriesId(seriesInfoBo.getSeriesId());
seriesNftInfoBo.setUpdatedAt(LocalDateTime.now());
this.updateSeriesNftStatus(routerType,skuId,seriesNftInfoBo);
});
}
public void updateSeriesNftStatus(String routerType,String skuId, GalaxySeriesNftInfoBo seriesNftInfoBo) {
//更新系列nft状态
this.getRedisUtil().set(GalaxyConstant.REDIS_KEY_GALAXY_SERIES_NFT.concat(routerType).concat(":") + skuId,seriesNftInfoBo,keyExpireTime);
Query query = Query.query(Criteria.where("skuId").is(skuId));
Update update = Update.fromDocument(Document.parse(JsonUtils.toJson(seriesNftInfoBo)));
String nowTimeStr = DateUtil.Formatter.yyyyMMddHHmmss.format(seriesNftInfoBo.getUpdatedAt());
update.set("routerType",routerType);
update.set("updatedAt",nowTimeStr);
UpdateResult result = this.getMongoTemplate().updateFirst(query,update, GalaxySeriesNftInfoVo.class,GalaxySeriesNftInfoVo.class.getSimpleName());
log.info("updateSeriesNftStatus result:{}",result.toString());
try{
this.getQueueUtil().sendMySqlRedis(
SqlMapping.get("galaxy_series_nft_info.updateSeriesIdAndStatus"),
new Object[]{seriesNftInfoBo.getSeriesId(),nowTimeStr,seriesNftInfoBo.getSkuId()}
, MQConst.GalaxyQueue.SQL_SERIES_INFO.getKey()
);
}catch(Exception e){
log.error(e.getMessage(),e);
log.error("#updateSeriesNftStatus error ==> MESSAGE:{}",e.getMessage());
}
}
//根据系列Id获取
public List<String> getSkuIdListBySeriesCode(String seriesCode){
//根据演出id获取用户信息 只查询5条
List<String> skuIdList = new ArrayList<>();
//获取总数
Criteria criteria = Criteria.where("seriesCode").is(seriesCode);
Query query = Query.query(criteria);
long startTime = System.currentTimeMillis();
List<GalaxySeriesNftInfoVo> seriesNftInfoVoList = this.getMongoTemplate().find(query, GalaxySeriesNftInfoVo.class, GalaxySeriesNftInfoVo.class.getSimpleName());
long endTime = System.currentTimeMillis();
log.info("getSkuIdListBySeriesCode 根据系列code获取skuId 耗时:{}ms",endTime-startTime);
//根据用户id获取头像信息
if(StringUtil.isNotNull(seriesNftInfoVoList)){
skuIdList = seriesNftInfoVoList.stream().map(GalaxySeriesNftInfoVo::getSkuId).collect(Collectors.toList());
}
return skuIdList;
}
public void setNftOrderBo(String routerType,String nftOrderPayId, GalaxyNftOrderBo nftOrderBo) {
this.getRedisUtil().set(GalaxyConstant.REDIS_KEY_GALAXY_TRADE_ORDER.concat(routerType).concat(":") + nftOrderPayId,nftOrderBo,keyExpireTime);
/**
* 入库mongo
*/
GalaxyNftOrderVo nftOrderVo = GalaxyNftOrderVo.getNew();
BeanUtil.copy(nftOrderBo,nftOrderVo);
this.getMongoTemplate().save(nftOrderVo,GalaxyNftOrderVo.class.getSimpleName());
// insert into galaxy_nft_order_info (mid, nft_order_pay_id, user_id, sku_id, series_name, series_id
// , nft_id, nft_price,from_address, to_address, nft_publish_task_id, nft_buy_task_id
// , nft_buy_pay_task_id,router_type, created_at, updated_at)
try{
this.getQueueUtil().sendMySqlRedis(
SqlMapping.get("galaxy_nft_order_info.insert"),
new Object[]{nftOrderPayId,nftOrderBo.getUserId(),nftOrderBo.getSkuId(),nftOrderBo.getSeriesName(),nftOrderBo.getSeriesId(),nftOrderBo.getSeriesCode()
,nftOrderBo.getNftId(),nftOrderBo.getNftPrice(),nftOrderBo.getNftPublishFromAddress(),nftOrderBo.getNftPublishToAddress(),nftOrderBo.getNftPublishTaskId()
,nftOrderBo.getNftBuyTaskId(),nftOrderBo.getNftBuyPayTaskId(),nftOrderBo.getRouterType(),LocalDateTime.now(),null
}
, MQConst.GalaxyQueue.SQL_NFT_ORDER_INFO.getKey()
);
}catch(Exception e){
log.error(e.getMessage(),e);
log.error("#setNftOrderBo error ==> MESSAGE:{}",e.getMessage());
}
//更新系列已发行信息
try {
this.updateSeriesCrtCount(routerType,nftOrderBo.getSeriesCode());
} catch (Exception e) {
log.error(e.getMessage(),e);
}
//更新系列nft已发行信息
try {
this.updateSeriesNftCrtCount(routerType,nftOrderBo.getSkuId());
} catch (Exception e) {
log.error(e.getMessage(),e);
}
}
public GalaxyNftOrderBo getNftOrderBo(String routerType, String nftOrderPayId) {
Object obj = this.getRedisUtil().get(GalaxyConstant.REDIS_KEY_GALAXY_TRADE_ORDER.concat(routerType).concat(":") + nftOrderPayId);
if(obj!=null){
return (GalaxyNftOrderBo) obj;
}else {
GalaxyNftOrderVo nftOrderVo = this.getMongoTemplate().findOne(Query.query(Criteria.where("nftOrderPayId").is(nftOrderPayId)), GalaxyNftOrderVo.class, GalaxyNftOrderVo.class.getSimpleName());
if (nftOrderVo == null) {
return null;
}
GalaxyNftOrderBo nftOrderBo = GalaxyNftOrderBo.getNew();
BeanUtil.copy(nftOrderVo,nftOrderBo);
this.getRedisUtil().set(GalaxyConstant.REDIS_KEY_GALAXY_TRADE_ORDER.concat(routerType).concat(":") + nftOrderPayId, nftOrderBo);
return nftOrderBo;
}
}
/**
* 更新nft订单发行数据
* @param routerType
* @param nftOrderPayId
* @param nftOrderBo
*/
public void updateNftOrderPublishInfo(String routerType,String nftOrderPayId,GalaxyNftOrderBo nftOrderBo) {
this.getRedisUtil().set(GalaxyConstant.REDIS_KEY_GALAXY_TRADE_ORDER.concat(routerType).concat(":") + nftOrderPayId,nftOrderBo,keyExpireTime);
Query query = Query.query(Criteria.where("nftOrderPayId").is(nftOrderBo.getNftOrderPayId()));
Update update = Update.fromDocument(Document.parse(JsonUtils.toJson(nftOrderBo)));
String nowTimeStr = DateUtil.Formatter.yyyyMMddHHmmss.format(nftOrderBo.getUpdatedAt());
update.set("updatedAt",nowTimeStr);
UpdateResult result = this.getMongoTemplate().updateFirst(query,update, GalaxyNftOrderVo.class,GalaxyNftOrderVo.class.getSimpleName());
log.info("updateNftOrderInfo result:{}",result.toString());
try{
this.getQueueUtil().sendMySqlRedis(
SqlMapping.get("galaxy_nft_order_info.updateNftPublishInfo"),
new Object[]{nftOrderBo.getNftId(),LocalDateTime.now(),nftOrderBo.getNftOrderPayId()}
, MQConst.GalaxyQueue.SQL_NFT_TRADE_INFO.getKey()
);
}catch(Exception e){
log.error(e.getMessage(),e);
log.error("#setNftTradeInfo error ==> MESSAGE:{}",e.getMessage());
}
}
/**
* 更新nft订单购买数据
* @param routerType
* @param nftOrderPayId
* @param nftOrderBo
*/
public void updateNftOrderBuyInfo(String routerType,String nftOrderPayId,GalaxyNftOrderBo nftOrderBo) {
this.getRedisUtil().set(GalaxyConstant.REDIS_KEY_GALAXY_TRADE_ORDER.concat(routerType).concat(":") + nftOrderPayId,nftOrderBo,keyExpireTime);
Query query = Query.query(Criteria.where("nftOrderPayId").is(nftOrderPayId));
Update update = Update.fromDocument(Document.parse(JsonUtils.toJson(nftOrderBo)));
String nowTimeStr = DateUtil.Formatter.yyyyMMddHHmmss.format(nftOrderBo.getUpdatedAt());
update.set("updatedAt",nowTimeStr);
UpdateResult result = this.getMongoTemplate().updateFirst(query,update, GalaxyNftOrderVo.class,GalaxyNftOrderVo.class.getSimpleName());
log.info("updateNftOrderInfo result:{}",result.toString());
try{
this.getQueueUtil().sendMySqlRedis(
SqlMapping.get("galaxy_nft_order_info.updateNftBuyInfo"),
new Object[]{nftOrderBo.getNftBuyTaskId(),LocalDateTime.now(),nftOrderBo.getNftOrderPayId()}
, MQConst.GalaxyQueue.SQL_NFT_TRADE_INFO.getKey()
);
}catch(Exception e){
log.error(e.getMessage(),e);
log.error("#setNftTradeInfo error ==> MESSAGE:{}",e.getMessage());
}
}
public void setGalaxyNftOrderBindBo(String routerType,String nftOrderPayId, GalaxyNftOrderBindBo nftOrderBindBo) {
this.getRedisUtil().set(GalaxyConstant.REDIS_KEY_GALAXY_PUBLISH_ORDER.concat(routerType).concat(":") + nftOrderPayId,nftOrderBindBo,keyExpireTime);
//入库mongo
GalaxyNftOrderBindVo nftOrderBindVo = GalaxyNftOrderBindVo.getNew();
BeanUtil.copy(nftOrderBindBo,nftOrderBindVo);
this.getMongoTemplate().save(nftOrderBindVo,GalaxyNftOrderBindVo.class.getSimpleName());
}
public GalaxyNftOrderBindBo getGalaxyNftOrderBindBo(String routerType,String nftOrderPayId) {
String redisKey = GalaxyConstant.REDIS_KEY_GALAXY_PUBLISH_ORDER.concat(routerType).concat(":") + nftOrderPayId;
Object obj = this.getRedisUtil().get(redisKey);
if(obj!=null){
return (GalaxyNftOrderBindBo) obj;
}else {
GalaxyNftOrderBindVo nftOrderBindVo = this.getMongoTemplate().findOne(Query.query(Criteria.where("nftOrderPayId").is(nftOrderPayId)), GalaxyNftOrderBindVo.class, GalaxyNftOrderBindVo.class.getSimpleName());
if (nftOrderBindVo == null) {
return null;
}
GalaxyNftOrderBindBo nftOrderBindBo = GalaxyNftOrderBindBo.getNew();
BeanUtil.copy(nftOrderBindVo,nftOrderBindBo);
this.getRedisUtil().set(redisKey, nftOrderBindBo,keyExpireTime);
return nftOrderBindBo;
}
}
public void setNftTradeInfo(String routerType, GalaxyNftTradeVo nftTradeVo) {
/**
* 入库mongo
*/
this.getMongoTemplate().save(nftTradeVo,GalaxyNftTradeVo.class.getSimpleName());
// insert into galaxy_nft_trade_info (mid, nft_id, nft_name,series_name,series_id,series_code, trade_hash, chain_timestamp, from_address
// , to_address,trade_price, trade_type, created_at, updated_at)
try{
this.getQueueUtil().sendMySqlRedis(
SqlMapping.get("galaxy_nft_trade_info.insert"),
new Object[]{nftTradeVo.getNftId(),nftTradeVo.getNftName(),nftTradeVo.getSeriesName(),nftTradeVo.getSeriesId(),nftTradeVo.getSeriesCode(),nftTradeVo.getTradeHash(),nftTradeVo.getChainTimestamp(),nftTradeVo.getFromAddress()
,nftTradeVo.getToAddress(),nftTradeVo.getTradePrice(),nftTradeVo.getTradeType(),LocalDateTime.now(),null
}
, MQConst.GalaxyQueue.SQL_NFT_TRADE_INFO.getKey()
);
}catch(Exception e){
log.error(e.getMessage(),e);
log.error("#setNftTradeInfo error ==> MESSAGE:{}",e.getMessage());
}
}
public long incrNftIdNo(String routerType,String skuId) {
return this.getRedisUtil().incr(GalaxyConstant.REDIS_KEY_GALAXY_PUBLISH_NFT.concat(routerType).concat(":").concat(skuId), 1);
}
public long getNftIdNo(String routerType,String skuId) {
Object o = this.getRedisUtil().get(GalaxyConstant.REDIS_KEY_GALAXY_PUBLISH_NFT.concat(routerType).concat(":").concat(skuId));
return o==null?-1:(int)o;
}
/**
* 更新系列已购买信息
* @param routerType
* @param seriesCode
*/
public void updateSeriesCrtCount(String routerType,String seriesCode) {
GalaxySeriesInfoBo seriesInfoBo = this.getSeriesInfoBo(routerType,seriesCode);
seriesInfoBo.setCrtCount(seriesInfoBo.getCrtCount()+1);
this.getRedisUtil().set(GalaxyConstant.REDIS_KEY_GALAXY_SERIES.concat(routerType).concat(":") + seriesCode,seriesInfoBo,keyExpireTime);
Query query = Query.query(Criteria.where("seriesCode").is(seriesInfoBo.getSeriesCode()));
Update update = Update.fromDocument(Document.parse(JsonUtils.toJson(seriesInfoBo)));
String nowTimeStr = DateUtil.Formatter.yyyyMMddHHmmss.format(LocalDateTime.now());
update.set("crtCount",seriesInfoBo.getCrtCount()+1);
update.set("updatedAt",nowTimeStr);
UpdateResult result = this.getMongoTemplate().updateFirst(query,update, GalaxySeriesInfoVo.class,GalaxySeriesInfoVo.class.getSimpleName());
log.info("updateSeriesCrtCount result:{}",result.toString());
try{
this.getQueueUtil().sendMySqlRedis(
SqlMapping.get("galaxy_series_info.updateSeriesCrtCount"),
new Object[]{seriesInfoBo.getCrtCount()+1,LocalDateTime.now(),seriesCode}
, MQConst.GalaxyQueue.SQL_NFT_TRADE_INFO.getKey()
);
}catch(Exception e){
log.error(e.getMessage(),e);
log.error("#updateSeriesCrtCount error ==> MESSAGE:{}",e.getMessage());
}
}
/**
* 更新系列nft已购买信息
* @param routerType
* @param skuId
*/
public void updateSeriesNftCrtCount(String routerType,String skuId) {
GalaxySeriesNftInfoBo seriesNftInfoBo = this.getSeriesNftInfoBo(routerType,skuId);
seriesNftInfoBo.setNftCrtCount(seriesNftInfoBo.getNftCrtCount()+1);
this.getRedisUtil().set(GalaxyConstant.REDIS_KEY_GALAXY_SERIES_NFT.concat(routerType).concat(":") + skuId,seriesNftInfoBo,keyExpireTime);
Query query = Query.query(Criteria.where("skuId").is(skuId));
Update update = Update.fromDocument(Document.parse(JsonUtils.toJson(seriesNftInfoBo)));
String nowTimeStr = DateUtil.Formatter.yyyyMMddHHmmss.format(LocalDate.now());
update.set("nftCrtCount",seriesNftInfoBo.getNftCrtCount()+1);
update.set("updatedAt",nowTimeStr);
UpdateResult result = this.getMongoTemplate().updateFirst(query,update, GalaxySeriesNftInfoBo.class,GalaxySeriesNftInfoBo.class.getSimpleName());
log.info("updateSeriesNftCrtCount result:{}",result.toString());
try{
this.getQueueUtil().sendMySqlRedis(
SqlMapping.get("galaxy_series_nft_info.updateSeriesNftCrtCount"),
new Object[]{seriesNftInfoBo.getNftCrtCount()+1,LocalDateTime.now(),skuId}
, MQConst.GalaxyQueue.SQL_NFT_TRADE_INFO.getKey()
);
}catch(Exception e){
log.error(e.getMessage(),e);
log.error("#GalaxySeriesNftInfoBo error ==> MESSAGE:{}",e.getMessage());
}
}
}
......@@ -2,11 +2,9 @@ package com.liquidnet.service.galaxy.utils;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.service.base.SqlMapping;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.stream.MapRecord;
import org.springframework.data.redis.connection.stream.StreamRecords;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.LinkedList;
......@@ -20,10 +18,10 @@ import java.util.LinkedList;
* @Copyright: LightNet @ Copyright (c) 2022
* @date 2022/3/25 15:35
*/
@Component
public class QueueUtil {
@Autowired
StringRedisTemplate stringRedisTemplate;
public abstract class AbstractQueueUtil {
abstract StringRedisTemplate getStringRedisTemplate();
/**
* 给 REDIS 队列发送消息 数据库相关
......@@ -43,7 +41,7 @@ public class QueueUtil {
HashMap<String, String> map = ObjectUtil.cloneHashMapStringAndString();
map.put("message", sqlData);
MapRecord<String, String, String> record = StreamRecords.mapBacked(map).withStreamKey(redisKey);
stringRedisTemplate.opsForStream().add(record);
this.getStringRedisTemplate().opsForStream().add(record);
return true;
} catch (Exception e) {
e.printStackTrace();
......@@ -60,6 +58,6 @@ public class QueueUtil {
public void sendMsgByRedis(String streamKey, String jsonMsg) {
HashMap<String, String> map = CollectionUtil.mapStringString();
map.put("message", jsonMsg);
stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(streamKey));
this.getStringRedisTemplate().opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(streamKey));
}
}
//package com.liquidnet.service.galaxy.utils;
package com.liquidnet.service.galaxy.utils;//package com.liquidnet.service.galaxy.utils;
//
//import com.alibaba.fastjson.JSONObject;
//import org.springframework.stereotype.Component;
......
package com.liquidnet.service.galaxy.utils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: QueueUtil
* @Package com.liquidnet.service.galaxy.utils
* @Copyright: LightNet @ Copyright (c) 2022
* @date 2022/3/25 15:35
*/
@Component
public class QueueUtil extends AbstractQueueUtil{
@Autowired
StringRedisTemplate stringRedisTemplate;
@Override
StringRedisTemplate getStringRedisTemplate() {
return stringRedisTemplate;
}
}
# begin-dev-这里是配置信息基本值
liquidnet:
cloudConfig:
profile: dev
security:
username: user
password: user123
eureka:
# host: 172.17.192.42:7001
host: 127.0.0.1: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开头错误码作系统保留
# ------------------------用户注册信息----------------------------
galaxy_user_info.insert=insert into galaxy_user_info (user_id, user_name, user_type, mobile, id_card_type, id_card, mnemonic, mnemonic_index,user_identification, user_pub_key, user_pri_key, block_chain_address, router_type,created_at, updated_at)values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
# ------------------------数字藏品系列信息----------------------------
galaxy_series_info.insert=insert into galaxy_series_info (series_info_id, series_name, series_code, series_id, total_count, crt_count,series_claim_task_id, series_claim_status, cover_url, series_desc, nft_count,router_type, created_at, updated_at)values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)
# ------------------------数字藏品系列信息----------------------------
galaxy_series_nft_info.insert=insert into galaxy_series_nft_info (series_nft_info_id, series_info_id, sku_id, series_name, series_code,series_id, nft_total_count, nft_crt_count, nft_id_begin ,nft_id_begin_index ,nft_publish_number,original_nft_url, original_display_url,author, nft_name, nft_url, display_url, nft_desc, nft_flag, sell_count, nft_hash,router_type, created_at, updated_at)values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
# ------------------------数字藏品订单信息----------------------------
galaxy_nft_order_info.insert=insert into galaxy_nft_order_info (nft_order_pay_id, user_id, sku_id, series_name, series_id, series_code, nft_id, nft_price,from_address, to_address, nft_publish_task_id, nft_buy_task_id, nft_buy_pay_task_id,router_type, created_at, updated_at)values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
# ------------------------数字藏品交易信息----------------------------
galaxy_nft_trade_info.insert=insert into galaxy_nft_trade_info (nft_id, nft_name, series_name, series_id, series_code, trade_hash, chain_timestamp, from_address, to_address,trade_price, trade_type, created_at, updated_at)values (?,?,?,?,?,?,?,?,?,?,?,?,?)
#更新信息
galaxy_series_info.updateSeriesIdAndStatus=update galaxy_series_info t set t.series_id = ?,t.chain_timestamp = ?,t.trade_hash = ?,t.series_claim_status = ? ,t.updated_at =? where t.series_code = ?
galaxy_series_nft_info.updateSeriesIdAndStatus=update galaxy_series_nft_info t set t.series_id = ?,t.updated_at =? where t.sku_id = ?
galaxy_nft_order_info.updateNftPublishInfo=update galaxy_nft_order_info t set t.nft_id = ? ,t.nft_publish_task_id = ?,t.nft_publish_chain_timestamp = ?,t.nft_publish_status = ?,t.nft_publish_trade_hash = ?,t.updated_at =? where t.nft_order_pay_id = ?
galaxy_nft_order_info.updateNftBuyInfo=update galaxy_nft_order_info t set t.nft_buy_task_id = ? ,t.nft_buy_chain_timestamp = ? ,t.nft_buy_status = ? ,t.nft_buy_trade_hash = ? ,t.nft_buy_pay_task_id = ? ,t.updated_at =? where t.nft_order_pay_id = ?
#更新已发行个数
galaxy_series_info.updateSeriesCrtCount=update galaxy_series_info t set t.crt_count = ?,t.updated_at =? where t.series_code = ?
#更新已发行个数
galaxy_series_nft_info.updateSeriesNftCrtCount=update galaxy_series_nft_info t set t.nft_crt_count = ?,t.updated_at =? where t.sku_id = ?
......@@ -31,6 +31,11 @@
<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>
......
package com.liquidnet.service.galaxy.router.strategy.biz;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: GalaxyCommonBiz
* @Package com.liquidnet.service.galaxy.router.strategy.biz
* @Copyright: LightNet @ Copyright (c) 2022
* @date 2022/3/23 11:20
*/
@Slf4j
@Component
public class GalaxyCommonBiz {
@Value("${liquidnet.galaxy.temp-file-path:/Users/anjiabin/mdsky_gitlab/galaxy/tempFilePath}")
private String tempFilePath;
/**
* 通过URL上传
* @param url
* @param name
* @return
*/
public File inputStreamToFile(String url, String name) {
try {
HttpURLConnection httpUrl = (HttpURLConnection) new URL(url).openConnection();
httpUrl.connect();
InputStream ins = httpUrl.getInputStream();
// File file = new File(System.getProperty("java.io.tmpdir") + File.separator + name);
File file = new File(tempFilePath + File.separator + name);
if (file.exists()) {
return file;
}
OutputStream os = new FileOutputStream(file);
int bytesRead;
int len = 8192;
byte[] buffer = new byte[len];
while ((bytesRead = ins.read(buffer, 0, len)) != -1) {
os.write(buffer, 0, bytesRead);
}
os.close();
ins.close();
return file;
} catch (Exception e) {
log.error("inputStreamToFileUrlError", e);
return null;
}
}
}
......@@ -15,6 +15,8 @@ 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.biz.GalaxyCommonBiz;
import com.liquidnet.service.galaxy.biz.GalaxyEnumBiz;
import com.liquidnet.service.galaxy.constant.GalaxyConstant;
import com.liquidnet.service.galaxy.constant.GalaxyEnum;
import com.liquidnet.service.galaxy.constant.GalaxyErrorEnum;
......@@ -22,8 +24,6 @@ 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.param.*;
import com.liquidnet.service.galaxy.router.strategy.biz.GalaxyCommonBiz;
import com.liquidnet.service.galaxy.router.strategy.biz.GalaxyEnumBiz;
import com.liquidnet.service.galaxy.utils.DataUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......
......@@ -8,6 +8,8 @@ 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.biz.GalaxyBeanTransferBiz;
import com.liquidnet.service.galaxy.biz.GalaxyEnumBiz;
import com.liquidnet.service.galaxy.constant.GalaxyErrorEnum;
import com.liquidnet.service.galaxy.dto.bo.GalaxyNftOrderBindBo;
import com.liquidnet.service.galaxy.dto.bo.GalaxyNftOrderBo;
......@@ -17,7 +19,6 @@ 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.biz.GalaxyEnumBiz;
import com.liquidnet.service.galaxy.utils.DataUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -46,7 +47,7 @@ public class ZxinPublishBiz {
private DataUtils dataUtils;
@Autowired
private ZxinCommonBiz zxinCommonBiz;
private GalaxyBeanTransferBiz galaxyBeanTransferBiz;
/**
* nft发行
......@@ -149,7 +150,7 @@ public class ZxinPublishBiz {
//构造缓存数据
if(nftOrderBo==null){
nftOrderBo = zxinCommonBiz.buildNftOrderBo(reqDto.getNftOrderPayId(),userInfoBo,seriesNftInfoBo);
nftOrderBo = galaxyBeanTransferBiz.buildNftOrderBo(reqDto.getNftOrderPayId(),userInfoBo,seriesNftInfoBo);
nftOrderBo.setNftId(nftId);
nftOrderBo.setNftPublishTaskId(taskId);
dataUtils.setNftOrderBo(reqDto.getRouterType(),reqDto.getNftOrderPayId(),nftOrderBo);
......@@ -330,7 +331,7 @@ public class ZxinPublishBiz {
//构造缓存数据
if(nftOrderBo==null){
nftOrderBo = zxinCommonBiz.buildNftOrderBo(reqDto.getNftOrderPayId(),userInfoBo,seriesNftInfoBo);
nftOrderBo = galaxyBeanTransferBiz.buildNftOrderBo(reqDto.getNftOrderPayId(),userInfoBo,seriesNftInfoBo);
nftOrderBo.setNftId(nftId);
nftOrderBo.setNftPublishTaskId(taskId);
//设置时间
......
......@@ -8,6 +8,8 @@ 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.galaxy.biz.GalaxyBeanTransferBiz;
import com.liquidnet.service.galaxy.biz.GalaxyEnumBiz;
import com.liquidnet.service.galaxy.constant.GalaxyEnum;
import com.liquidnet.service.galaxy.constant.GalaxyErrorEnum;
import com.liquidnet.service.galaxy.dto.bo.GalaxyNftOrderBindBo;
......@@ -15,7 +17,6 @@ import com.liquidnet.service.galaxy.dto.bo.GalaxyNftOrderBo;
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.router.strategy.biz.GalaxyEnumBiz;
import com.liquidnet.service.galaxy.utils.DataUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -52,7 +53,7 @@ public class ZxinTradeBiz {
private DataUtils dataUtils;
@Autowired
private ZxinCommonBiz zxinCommonBiz;
private GalaxyBeanTransferBiz galaxyBeanTransferBiz;
@Autowired
private ZxinPublishBiz zxinPublishBiz;
......@@ -101,7 +102,7 @@ public class ZxinTradeBiz {
//初始化订单数据
if(nftOrderBo==null){
nftOrderBo = zxinCommonBiz.buildNftOrderBo(reqDto.getNftOrderPayId(),userInfoBo,seriesNftInfoBo);
nftOrderBo = galaxyBeanTransferBiz.buildNftOrderBo(reqDto.getNftOrderPayId(),userInfoBo,seriesNftInfoBo);
dataUtils.setNftOrderBo(reqDto.getRouterType(),reqDto.getNftOrderPayId(),nftOrderBo);
}
......
package com.liquidnet.service.galaxy.router.zxin.biz;
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.dto.*;
import com.liquidnet.common.third.zxlnft.dto.nft.Nft016QueryRsData;
......@@ -15,13 +14,13 @@ import com.liquidnet.common.third.zxlnft.util.ZxlnftSdkUtil;
import com.liquidnet.commons.lang.util.BASE64Util;
import com.liquidnet.commons.lang.util.StringUtil;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.galaxy.biz.GalaxyEnumBiz;
import com.liquidnet.service.galaxy.constant.GalaxyEnum;
import com.liquidnet.service.galaxy.dto.bo.GalaxyUserInfoBo;
import com.liquidnet.service.galaxy.dto.param.GalaxyUserBindStatusQueryReqDto;
import com.liquidnet.service.galaxy.dto.param.GalaxyUserBindStatusQueryRespDto;
import com.liquidnet.service.galaxy.dto.param.GalaxyUserRegisterReqDto;
import com.liquidnet.service.galaxy.dto.param.GalaxyUserRegisterRespDto;
import com.liquidnet.service.galaxy.router.strategy.biz.GalaxyEnumBiz;
import com.liquidnet.service.galaxy.utils.DataUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -51,9 +50,6 @@ public class ZxinUserBiz {
@Autowired
private ZxlnftBiz zxlnftBiz;
@Autowired
private ZxlnftConfig zxlnftConfig;
@Autowired
private DataUtils dataUtils;
......
package com.liquidnet.service.galaxy.utils;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.galaxy.constant.GalaxyConstant;
import com.liquidnet.service.galaxy.constant.GalaxyEnum;
import com.liquidnet.service.galaxy.dto.bo.*;
import com.liquidnet.service.galaxy.dto.vo.mongo.*;
import com.mongodb.client.result.UpdateResult;
import lombok.extern.slf4j.Slf4j;
import org.bson.Document;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Component;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j
@Component
public class DataUtils {
public class DataUtils extends AbstractDataUtils{
@Autowired
private RedisUtil redisUtil;
......@@ -37,484 +18,19 @@ public class DataUtils {
@Autowired
private QueueUtil queueUtil;
private long keyExpireTime = 3600*24*30;
public void setGalaxyUserInfo(String routerType,String userId, GalaxyUserInfoBo userInfoBo) {
String userType = GalaxyEnum.RegisterTypeEnum.COMPANY.getCode();
redisUtil.set(GalaxyConstant.REDIS_KEY_GALAXY_USER.concat(routerType).concat(":") + userId,userInfoBo,keyExpireTime);
//入库mongo
GalaxyUserInfoVo userInfoVo = GalaxyUserInfoVo.getNew();
BeanUtil.copy(userInfoBo,userInfoVo);
userInfoVo.setCreatedAt(LocalDateTime.now());
mongoTemplate.save(userInfoVo,GalaxyUserInfoVo.class.getSimpleName());
// insert into galaxy_user_info (mid, user_id, user_name, user_type, mobile, id_card_type
// , id_card, mnemonic, index,user_identification, user_pub_key
// , user_pri_key, block_chain_address, router_type,created_at, updated_at)
try{
queueUtil.sendMySqlRedis(
SqlMapping.get("galaxy_user_info.insert"),
new Object[]{userId,userInfoBo.getUserName(),userType,userInfoBo.getMobile(),userInfoBo.getIdCardType()
,userInfoBo.getIdCard(),userInfoBo.getMnemonic(),userInfoBo.getIndex(),userInfoBo.getUserIdentification(),userInfoBo.getUserPubKey()
,userInfoBo.getUserPriKey(),userInfoBo.getBlockChainAddress(),userInfoBo.getRouterType(),new Date(),null
}
, MQConst.GalaxyQueue.SQL_USER_INFO.getKey()
);
}catch(Exception e){
log.error(e.getMessage(),e);
log.error("#setGalaxyUserInfo error ==> MESSAGE:{}",e.getMessage());
}
}
public GalaxyUserInfoBo getGalaxyUserInfo(String routerType,String userId) {
Object obj = redisUtil.get(GalaxyConstant.REDIS_KEY_GALAXY_USER.concat(routerType).concat(":") + userId);
if(obj!=null){
return (GalaxyUserInfoBo) obj;
}else {
GalaxyUserInfoVo userInfoVo = mongoTemplate.findOne(Query.query(Criteria.where("userId").is(userId)), GalaxyUserInfoVo.class, GalaxyUserInfoVo.class.getSimpleName());
if (userInfoVo == null) {
return null;
}
GalaxyUserInfoBo userInfoBo = GalaxyUserInfoBo.getNew();
BeanUtil.copy(userInfoVo,userInfoBo);
redisUtil.set(GalaxyConstant.REDIS_KEY_GALAXY_USER.concat(routerType).concat(":") + userId, userInfoBo);
return userInfoBo;
}
}
public void setSeriesNftUploadBo(String routerType,String skuId, GalaxySeriesNftUploadBo seriesNftUploadBo) {
redisUtil.set(GalaxyConstant.REDIS_KEY_GALAXY_SERIES_NFT_UPLOAD.concat(routerType).concat(":") + skuId,seriesNftUploadBo,keyExpireTime);
//mongo入库
GalaxySeriesNftUploadVo seriesNftUploadVo = GalaxySeriesNftUploadVo.getNew();
BeanUtil.copy(seriesNftUploadBo,seriesNftUploadVo);
seriesNftUploadVo.setCreatedAt(LocalDateTime.now());
mongoTemplate.save(seriesNftUploadVo,GalaxySeriesNftUploadVo.class.getSimpleName());
}
public GalaxySeriesNftUploadBo getSeriesNftUploadBo(String routerType,String skuId) {
Object obj = redisUtil.get(GalaxyConstant.REDIS_KEY_GALAXY_SERIES_NFT_UPLOAD.concat(routerType).concat(":") + skuId);
if(obj!=null){
return (GalaxySeriesNftUploadBo) obj;
}else {
//设置查询参数
Criteria criteria = Criteria.where("routerType").is(routerType);
String userId = CurrentUtil.getCurrentUid();
if(StringUtil.isNotEmpty(skuId)){
criteria = criteria.and("skuId").is(skuId);
}
GalaxySeriesNftUploadVo seriesNftUploadVo = mongoTemplate.findOne(Query.query(criteria), GalaxySeriesNftUploadVo.class, GalaxySeriesNftUploadVo.class.getSimpleName());
if (seriesNftUploadVo == null) {
return null;
}
GalaxySeriesNftUploadBo seriesNftUploadBo = GalaxySeriesNftUploadBo.getNew();
BeanUtil.copy(seriesNftUploadVo,seriesNftUploadBo);
redisUtil.set(GalaxyConstant.REDIS_KEY_GALAXY_SERIES_NFT_UPLOAD.concat(routerType).concat(":") + skuId, seriesNftUploadBo);
return seriesNftUploadBo;
}
}
public void setSeriesInfoBo(String routerType,String seriesCode, GalaxySeriesInfoBo seriesInfoBo) {
redisUtil.set(GalaxyConstant.REDIS_KEY_GALAXY_SERIES.concat(routerType).concat(":") + seriesCode,seriesInfoBo,keyExpireTime);
// insert into galaxy_series_info (mid, series_info_id, series_name, series_code, series_id, total_count
// , crt_count,series_claim_task_id, series_claim_status, cover_url, series_desc
// , nft_count,router_type, created_at, updated_at)
Integer nftCount = 1;//默认为一个系列包含一个NFT
//mongo入库
GalaxySeriesInfoVo seriesInfoVo = GalaxySeriesInfoVo.getNew();
BeanUtil.copy(seriesInfoBo,seriesInfoVo);
seriesInfoVo.setCreatedAt(DateUtil.format(LocalDateTime.now(), DateUtil.Formatter.yyyyMMddHHmmss));
mongoTemplate.save(seriesInfoVo,GalaxySeriesInfoVo.class.getSimpleName());
try{
queueUtil.sendMySqlRedis(
SqlMapping.get("galaxy_series_info.insert"),
new Object[]{seriesInfoBo.getSeriesInfoId(),seriesInfoBo.getSeriesName(),seriesCode,null,seriesInfoBo.getTotalCount()
,seriesInfoBo.getCrtCount(),seriesInfoBo.getSeriesClaimTaskId(),seriesInfoBo.getSeriesClaimStatus(),seriesInfoBo.getCoverUrl(),seriesInfoBo.getSeriesDesc()
,nftCount,seriesInfoBo.getRouterType(),LocalDateTime.now(),null
}
, MQConst.GalaxyQueue.SQL_SERIES_INFO.getKey()
);
}catch(Exception e){
log.error(e.getMessage(),e);
log.error("#setSeriesInfoBo error ==> MESSAGE:{}",e.getMessage());
}
}
public GalaxySeriesInfoBo getSeriesInfoBo(String routerType, String seriesCode) {
Object obj = redisUtil.get(GalaxyConstant.REDIS_KEY_GALAXY_SERIES.concat(routerType).concat(":") + seriesCode);
if(obj!=null){
return (GalaxySeriesInfoBo) obj;
}else {
GalaxySeriesInfoVo seriesInfoVo = mongoTemplate.findOne(Query.query(Criteria.where("seriesCode").is(seriesCode)), GalaxySeriesInfoVo.class, GalaxySeriesInfoVo.class.getSimpleName());
if (seriesInfoVo == null) {
return null;
}
GalaxySeriesInfoBo seriesInfoBo = GalaxySeriesInfoBo.getNew();
BeanUtil.copy(seriesInfoVo,seriesInfoBo);
redisUtil.set(GalaxyConstant.REDIS_KEY_GALAXY_SERIES.concat(routerType).concat(":") + seriesCode, seriesInfoBo);
return seriesInfoBo;
}
}
public void setSeriesNftInfoBo(String routerType, String skuId, GalaxySeriesInfoBo seriesInfoBo, GalaxySeriesNftInfoBo seriesNftInfoBo) {
redisUtil.set(GalaxyConstant.REDIS_KEY_GALAXY_SERIES_NFT.concat(routerType).concat(":") + skuId,seriesNftInfoBo,keyExpireTime);
//初始化nft发行开始索引
redisUtil.set(GalaxyConstant.REDIS_KEY_GALAXY_PUBLISH_NFT.concat(routerType).concat(":").concat(skuId),seriesNftInfoBo.getNftIdBeginIndex());
//mongo入库
GalaxySeriesNftInfoVo seriesNftInfoVo = GalaxySeriesNftInfoVo.getNew();
BeanUtil.copy(seriesNftInfoBo,seriesNftInfoVo);
seriesNftInfoVo.setCreatedAt(LocalDateTime.now());
mongoTemplate.save(seriesNftInfoVo,GalaxySeriesNftInfoVo.class.getSimpleName());
try{
// insert into galaxy_series_nft_info (mid, series_nft_info_id, series_info_id, sku_id, series_name, series_code
// ,series_id, nft_total_count, nft_crt_count,nft_id_begin,nft_id_begin_index,nft_publish_number,original_nft_url
// , original_display_url,author, nft_name, nft_url, display_url
// , nft_desc, nft_flag, sell_count, nft_hash,router_type
// , created_at, updated_at)
queueUtil.sendMySqlRedis(
SqlMapping.get("galaxy_series_nft_info.insert"),
new Object[]{seriesNftInfoBo.getSeriesNftInfoId(),seriesInfoBo.getSeriesInfoId(),skuId,seriesInfoBo.getSeriesName(),seriesInfoBo.getSeriesCode()
,seriesInfoBo.getSeriesId(),seriesNftInfoBo.getNftTotalCount(),seriesNftInfoBo.getNftCrtCount(),seriesNftInfoBo.getNftIdBegin(),seriesNftInfoBo.getNftIdBeginIndex(),seriesNftInfoBo.getNftPublishNumber(),seriesNftInfoBo.getOriginalNftUrl()
,seriesNftInfoBo.getOriginalDisplayUrl(),seriesNftInfoBo.getAuthor(),seriesNftInfoBo.getNftName(),seriesNftInfoBo.getNftUrl(),seriesNftInfoBo.getDisplayUrl()
,seriesNftInfoBo.getNftDesc(),seriesNftInfoBo.getNftFlag(),seriesNftInfoBo.getSellCount(),seriesNftInfoBo.getNftHash(),seriesInfoBo.getRouterType()
,LocalDateTime.now(),null
}
, MQConst.GalaxyQueue.SQL_SERIES_INFO.getKey());
}catch(Exception e){
log.error(e.getMessage(),e);
log.error("#setSeriesInfoBo error ==> MESSAGE:{}",e.getMessage());
}
}
public GalaxySeriesNftInfoBo getSeriesNftInfoBo(String routerType, String skuId) {
Object obj = redisUtil.get(GalaxyConstant.REDIS_KEY_GALAXY_SERIES_NFT.concat(routerType).concat(":") + skuId);
if(obj!=null){
return (GalaxySeriesNftInfoBo) obj;
}else {
GalaxySeriesNftInfoVo seriesNftInfoVo = mongoTemplate.findOne(Query.query(Criteria.where("skuId").is(skuId)), GalaxySeriesNftInfoVo.class, GalaxySeriesNftInfoVo.class.getSimpleName());
if (seriesNftInfoVo == null) {
return null;
}
GalaxySeriesNftInfoBo seriesNftInfoBo = GalaxySeriesNftInfoBo.getNew();
BeanUtil.copy(seriesNftInfoVo,seriesNftInfoBo);
redisUtil.set(GalaxyConstant.REDIS_KEY_GALAXY_SERIES_NFT.concat(routerType).concat(":") + skuId, seriesNftInfoBo);
return seriesNftInfoBo;
}
}
public void updateSeriesClaimStatus(String routerType,String seriesCode, GalaxySeriesInfoBo seriesInfoBo) {
redisUtil.set(GalaxyConstant.REDIS_KEY_GALAXY_SERIES.concat(routerType).concat(":") + seriesCode,seriesInfoBo,keyExpireTime);
Query query = Query.query(Criteria.where("seriesCode").is(seriesInfoBo.getSeriesCode()));
Update update = Update.fromDocument(Document.parse(JsonUtils.toJson(seriesInfoBo)));
String nowTimeStr = DateUtil.Formatter.yyyyMMddHHmmss.format(LocalDateTime.now());
update.set("updatedAt",nowTimeStr);
UpdateResult result = mongoTemplate.updateFirst(query,update, GalaxySeriesInfoVo.class,GalaxySeriesInfoVo.class.getSimpleName());
log.info("updateSeriesClaimStatus result:{}",result.toString());
try{
queueUtil.sendMySqlRedis(
SqlMapping.get("galaxy_series_info.updateSeriesIdAndStatus"),
new Object[]{seriesInfoBo.getSeriesId(),seriesInfoBo.getChainTimestamp(),seriesInfoBo.getTradeHash(),seriesInfoBo.getSeriesClaimStatus(),nowTimeStr,seriesInfoBo.getSeriesCode()}
, MQConst.GalaxyQueue.SQL_SERIES_INFO.getKey()
);
}catch(Exception e){
log.error(e.getMessage(),e);
log.error("#updateSeriesClaimStatus error ==> MESSAGE:{}",e.getMessage());
}
//更新系列对应的系列nft状态
List<String> skuIdList = this.getSkuIdListBySeriesCode(seriesCode);
skuIdList.stream().forEach(skuId -> {
GalaxySeriesNftInfoBo seriesNftInfoBo = this.getSeriesNftInfoBo(routerType,skuId);
seriesNftInfoBo.setSeriesId(seriesInfoBo.getSeriesId());
seriesNftInfoBo.setUpdatedAt(LocalDateTime.now());
this.updateSeriesNftStatus(routerType,skuId,seriesNftInfoBo);
});
}
public void updateSeriesNftStatus(String routerType,String skuId, GalaxySeriesNftInfoBo seriesNftInfoBo) {
//更新系列nft状态
redisUtil.set(GalaxyConstant.REDIS_KEY_GALAXY_SERIES_NFT.concat(routerType).concat(":") + skuId,seriesNftInfoBo,keyExpireTime);
Query query = Query.query(Criteria.where("skuId").is(skuId));
Update update = Update.fromDocument(Document.parse(JsonUtils.toJson(seriesNftInfoBo)));
String nowTimeStr = DateUtil.Formatter.yyyyMMddHHmmss.format(seriesNftInfoBo.getUpdatedAt());
update.set("routerType",routerType);
update.set("updatedAt",nowTimeStr);
UpdateResult result = mongoTemplate.updateFirst(query,update, GalaxySeriesNftInfoVo.class,GalaxySeriesNftInfoVo.class.getSimpleName());
log.info("updateSeriesNftStatus result:{}",result.toString());
try{
queueUtil.sendMySqlRedis(
SqlMapping.get("galaxy_series_nft_info.updateSeriesIdAndStatus"),
new Object[]{seriesNftInfoBo.getSeriesId(),nowTimeStr,seriesNftInfoBo.getSkuId()}
, MQConst.GalaxyQueue.SQL_SERIES_INFO.getKey()
);
}catch(Exception e){
log.error(e.getMessage(),e);
log.error("#updateSeriesNftStatus error ==> MESSAGE:{}",e.getMessage());
}
}
//根据系列Id获取
public List<String> getSkuIdListBySeriesCode(String seriesCode){
//根据演出id获取用户信息 只查询5条
List<String> skuIdList = new ArrayList<>();
//获取总数
Criteria criteria = Criteria.where("seriesCode").is(seriesCode);
Query query = Query.query(criteria);
long startTime = System.currentTimeMillis();
List<GalaxySeriesNftInfoVo> seriesNftInfoVoList = mongoTemplate.find(query, GalaxySeriesNftInfoVo.class, GalaxySeriesNftInfoVo.class.getSimpleName());
long endTime = System.currentTimeMillis();
log.info("getSkuIdListBySeriesCode 根据系列code获取skuId 耗时:{}ms",endTime-startTime);
//根据用户id获取头像信息
if(StringUtil.isNotNull(seriesNftInfoVoList)){
skuIdList = seriesNftInfoVoList.stream().map(GalaxySeriesNftInfoVo::getSkuId).collect(Collectors.toList());
}
return skuIdList;
}
public void setNftOrderBo(String routerType,String nftOrderPayId, GalaxyNftOrderBo nftOrderBo) {
redisUtil.set(GalaxyConstant.REDIS_KEY_GALAXY_TRADE_ORDER.concat(routerType).concat(":") + nftOrderPayId,nftOrderBo,keyExpireTime);
/**
* 入库mongo
*/
GalaxyNftOrderVo nftOrderVo = GalaxyNftOrderVo.getNew();
BeanUtil.copy(nftOrderBo,nftOrderVo);
mongoTemplate.save(nftOrderVo,GalaxyNftOrderVo.class.getSimpleName());
// insert into galaxy_nft_order_info (mid, nft_order_pay_id, user_id, sku_id, series_name, series_id
// , nft_id, nft_price,from_address, to_address, nft_publish_task_id, nft_buy_task_id
// , nft_buy_pay_task_id,router_type, created_at, updated_at)
try{
queueUtil.sendMySqlRedis(
SqlMapping.get("galaxy_nft_order_info.insert"),
new Object[]{nftOrderPayId,nftOrderBo.getUserId(),nftOrderBo.getSkuId(),nftOrderBo.getSeriesName(),nftOrderBo.getSeriesId(),nftOrderBo.getSeriesCode()
,nftOrderBo.getNftId(),nftOrderBo.getNftPrice(),nftOrderBo.getNftPublishFromAddress(),nftOrderBo.getNftPublishToAddress(),nftOrderBo.getNftPublishTaskId()
,nftOrderBo.getNftBuyTaskId(),nftOrderBo.getNftBuyPayTaskId(),nftOrderBo.getRouterType(),LocalDateTime.now(),null
}
, MQConst.GalaxyQueue.SQL_NFT_ORDER_INFO.getKey()
);
}catch(Exception e){
log.error(e.getMessage(),e);
log.error("#setNftOrderBo error ==> MESSAGE:{}",e.getMessage());
}
//更新系列已发行信息
try {
this.updateSeriesCrtCount(routerType,nftOrderBo.getSeriesCode());
} catch (Exception e) {
log.error(e.getMessage(),e);
}
//更新系列nft已发行信息
try {
this.updateSeriesNftCrtCount(routerType,nftOrderBo.getSkuId());
} catch (Exception e) {
log.error(e.getMessage(),e);
}
}
public GalaxyNftOrderBo getNftOrderBo(String routerType, String nftOrderPayId) {
Object obj = redisUtil.get(GalaxyConstant.REDIS_KEY_GALAXY_TRADE_ORDER.concat(routerType).concat(":") + nftOrderPayId);
if(obj!=null){
return (GalaxyNftOrderBo) obj;
}else {
GalaxyNftOrderVo nftOrderVo = mongoTemplate.findOne(Query.query(Criteria.where("nftOrderPayId").is(nftOrderPayId)), GalaxyNftOrderVo.class, GalaxyNftOrderVo.class.getSimpleName());
if (nftOrderVo == null) {
return null;
}
GalaxyNftOrderBo nftOrderBo = GalaxyNftOrderBo.getNew();
BeanUtil.copy(nftOrderVo,nftOrderBo);
redisUtil.set(GalaxyConstant.REDIS_KEY_GALAXY_TRADE_ORDER.concat(routerType).concat(":") + nftOrderPayId, nftOrderBo);
return nftOrderBo;
}
}
/**
* 更新nft订单发行数据
* @param routerType
* @param nftOrderPayId
* @param nftOrderBo
*/
public void updateNftOrderPublishInfo(String routerType,String nftOrderPayId,GalaxyNftOrderBo nftOrderBo) {
redisUtil.set(GalaxyConstant.REDIS_KEY_GALAXY_TRADE_ORDER.concat(routerType).concat(":") + nftOrderPayId,nftOrderBo,keyExpireTime);
Query query = Query.query(Criteria.where("nftOrderPayId").is(nftOrderBo.getNftOrderPayId()));
Update update = Update.fromDocument(Document.parse(JsonUtils.toJson(nftOrderBo)));
String nowTimeStr = DateUtil.Formatter.yyyyMMddHHmmss.format(nftOrderBo.getUpdatedAt());
update.set("updatedAt",nowTimeStr);
UpdateResult result = mongoTemplate.updateFirst(query,update, GalaxyNftOrderVo.class,GalaxyNftOrderVo.class.getSimpleName());
log.info("updateNftOrderInfo result:{}",result.toString());
try{
queueUtil.sendMySqlRedis(
SqlMapping.get("galaxy_nft_order_info.updateNftPublishInfo"),
new Object[]{nftOrderBo.getNftId(),LocalDateTime.now(),nftOrderBo.getNftOrderPayId()}
, MQConst.GalaxyQueue.SQL_NFT_TRADE_INFO.getKey()
);
}catch(Exception e){
log.error(e.getMessage(),e);
log.error("#setNftTradeInfo error ==> MESSAGE:{}",e.getMessage());
}
}
/**
* 更新nft订单购买数据
* @param routerType
* @param nftOrderPayId
* @param nftOrderBo
*/
public void updateNftOrderBuyInfo(String routerType,String nftOrderPayId,GalaxyNftOrderBo nftOrderBo) {
redisUtil.set(GalaxyConstant.REDIS_KEY_GALAXY_TRADE_ORDER.concat(routerType).concat(":") + nftOrderPayId,nftOrderBo,keyExpireTime);
Query query = Query.query(Criteria.where("nftOrderPayId").is(nftOrderPayId));
Update update = Update.fromDocument(Document.parse(JsonUtils.toJson(nftOrderBo)));
String nowTimeStr = DateUtil.Formatter.yyyyMMddHHmmss.format(nftOrderBo.getUpdatedAt());
update.set("updatedAt",nowTimeStr);
UpdateResult result = mongoTemplate.updateFirst(query,update, GalaxyNftOrderVo.class,GalaxyNftOrderVo.class.getSimpleName());
log.info("updateNftOrderInfo result:{}",result.toString());
try{
queueUtil.sendMySqlRedis(
SqlMapping.get("galaxy_nft_order_info.updateNftBuyInfo"),
new Object[]{nftOrderBo.getNftBuyTaskId(),LocalDateTime.now(),nftOrderBo.getNftOrderPayId()}
, MQConst.GalaxyQueue.SQL_NFT_TRADE_INFO.getKey()
);
}catch(Exception e){
log.error(e.getMessage(),e);
log.error("#setNftTradeInfo error ==> MESSAGE:{}",e.getMessage());
}
}
public void setGalaxyNftOrderBindBo(String routerType,String nftOrderPayId, GalaxyNftOrderBindBo nftOrderBindBo) {
redisUtil.set(GalaxyConstant.REDIS_KEY_GALAXY_PUBLISH_ORDER.concat(routerType).concat(":") + nftOrderPayId,nftOrderBindBo,keyExpireTime);
//入库mongo
GalaxyNftOrderBindVo nftOrderBindVo = GalaxyNftOrderBindVo.getNew();
BeanUtil.copy(nftOrderBindBo,nftOrderBindVo);
mongoTemplate.save(nftOrderBindVo,GalaxyNftOrderBindVo.class.getSimpleName());
}
public GalaxyNftOrderBindBo getGalaxyNftOrderBindBo(String routerType,String nftOrderPayId) {
String redisKey = GalaxyConstant.REDIS_KEY_GALAXY_PUBLISH_ORDER.concat(routerType).concat(":") + nftOrderPayId;
Object obj = redisUtil.get(redisKey);
if(obj!=null){
return (GalaxyNftOrderBindBo) obj;
}else {
GalaxyNftOrderBindVo nftOrderBindVo = mongoTemplate.findOne(Query.query(Criteria.where("nftOrderPayId").is(nftOrderPayId)), GalaxyNftOrderBindVo.class, GalaxyNftOrderBindVo.class.getSimpleName());
if (nftOrderBindVo == null) {
return null;
}
GalaxyNftOrderBindBo nftOrderBindBo = GalaxyNftOrderBindBo.getNew();
BeanUtil.copy(nftOrderBindVo,nftOrderBindBo);
redisUtil.set(redisKey, nftOrderBindBo,keyExpireTime);
return nftOrderBindBo;
}
}
public void setNftTradeInfo(String routerType, GalaxyNftTradeVo nftTradeVo) {
/**
* 入库mongo
*/
mongoTemplate.save(nftTradeVo,GalaxyNftTradeVo.class.getSimpleName());
// insert into galaxy_nft_trade_info (mid, nft_id, nft_name,series_name,series_id,series_code, trade_hash, chain_timestamp, from_address
// , to_address,trade_price, trade_type, created_at, updated_at)
try{
queueUtil.sendMySqlRedis(
SqlMapping.get("galaxy_nft_trade_info.insert"),
new Object[]{nftTradeVo.getNftId(),nftTradeVo.getNftName(),nftTradeVo.getSeriesName(),nftTradeVo.getSeriesId(),nftTradeVo.getSeriesCode(),nftTradeVo.getTradeHash(),nftTradeVo.getChainTimestamp(),nftTradeVo.getFromAddress()
,nftTradeVo.getToAddress(),nftTradeVo.getTradePrice(),nftTradeVo.getTradeType(),LocalDateTime.now(),null
}
, MQConst.GalaxyQueue.SQL_NFT_TRADE_INFO.getKey()
);
}catch(Exception e){
log.error(e.getMessage(),e);
log.error("#setNftTradeInfo error ==> MESSAGE:{}",e.getMessage());
}
}
public long incrNftIdNo(String routerType,String skuId) {
return redisUtil.incr(GalaxyConstant.REDIS_KEY_GALAXY_PUBLISH_NFT.concat(routerType).concat(":").concat(skuId), 1);
@Override
public RedisUtil getRedisUtil() {
return redisUtil;
}
public long getNftIdNo(String routerType,String skuId) {
Object o = redisUtil.get(GalaxyConstant.REDIS_KEY_GALAXY_PUBLISH_NFT.concat(routerType).concat(":").concat(skuId));
return o==null?-1:(int)o;
@Override
public MongoTemplate getMongoTemplate() {
return mongoTemplate;
}
/**
* 更新系列已购买信息
* @param routerType
* @param seriesCode
*/
public void updateSeriesCrtCount(String routerType,String seriesCode) {
GalaxySeriesInfoBo seriesInfoBo = this.getSeriesInfoBo(routerType,seriesCode);
seriesInfoBo.setCrtCount(seriesInfoBo.getCrtCount()+1);
redisUtil.set(GalaxyConstant.REDIS_KEY_GALAXY_SERIES.concat(routerType).concat(":") + seriesCode,seriesInfoBo,keyExpireTime);
Query query = Query.query(Criteria.where("seriesCode").is(seriesInfoBo.getSeriesCode()));
Update update = Update.fromDocument(Document.parse(JsonUtils.toJson(seriesInfoBo)));
String nowTimeStr = DateUtil.Formatter.yyyyMMddHHmmss.format(LocalDateTime.now());
update.set("crtCount",seriesInfoBo.getCrtCount()+1);
update.set("updatedAt",nowTimeStr);
UpdateResult result = mongoTemplate.updateFirst(query,update, GalaxySeriesInfoVo.class,GalaxySeriesInfoVo.class.getSimpleName());
log.info("updateSeriesCrtCount result:{}",result.toString());
try{
queueUtil.sendMySqlRedis(
SqlMapping.get("galaxy_series_info.updateSeriesCrtCount"),
new Object[]{seriesInfoBo.getCrtCount()+1,LocalDateTime.now(),seriesCode}
, MQConst.GalaxyQueue.SQL_NFT_TRADE_INFO.getKey()
);
}catch(Exception e){
log.error(e.getMessage(),e);
log.error("#updateSeriesCrtCount error ==> MESSAGE:{}",e.getMessage());
}
}
/**
* 更新系列nft已购买信息
* @param routerType
* @param skuId
*/
public void updateSeriesNftCrtCount(String routerType,String skuId) {
GalaxySeriesNftInfoBo seriesNftInfoBo = this.getSeriesNftInfoBo(routerType,skuId);
seriesNftInfoBo.setNftCrtCount(seriesNftInfoBo.getNftCrtCount()+1);
redisUtil.set(GalaxyConstant.REDIS_KEY_GALAXY_SERIES_NFT.concat(routerType).concat(":") + skuId,seriesNftInfoBo,keyExpireTime);
Query query = Query.query(Criteria.where("skuId").is(skuId));
Update update = Update.fromDocument(Document.parse(JsonUtils.toJson(seriesNftInfoBo)));
String nowTimeStr = DateUtil.Formatter.yyyyMMddHHmmss.format(LocalDate.now());
update.set("nftCrtCount",seriesNftInfoBo.getNftCrtCount()+1);
update.set("updatedAt",nowTimeStr);
UpdateResult result = mongoTemplate.updateFirst(query,update, GalaxySeriesNftInfoBo.class,GalaxySeriesNftInfoBo.class.getSimpleName());
log.info("updateSeriesNftCrtCount result:{}",result.toString());
try{
queueUtil.sendMySqlRedis(
SqlMapping.get("galaxy_series_nft_info.updateSeriesNftCrtCount"),
new Object[]{seriesNftInfoBo.getNftCrtCount()+1,LocalDateTime.now(),skuId}
, MQConst.GalaxyQueue.SQL_NFT_TRADE_INFO.getKey()
);
}catch(Exception e){
log.error(e.getMessage(),e);
log.error("#GalaxySeriesNftInfoBo error ==> MESSAGE:{}",e.getMessage());
}
@Override
public QueueUtil getQueueUtil() {
return queueUtil;
}
}
......@@ -11,7 +11,7 @@ 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.router.strategy.biz.GalaxyCommonBiz;
import com.liquidnet.service.galaxy.biz.GalaxyCommonBiz;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
......
......@@ -12,9 +12,9 @@
<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>
......
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