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

Commit b8a1ba38 authored by anjiabin's avatar anjiabin

至信链按订单切换

parent 4251bfc2
package com.liquidnet.service.galaxy.biz;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.commons.lang.util.StringUtil;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.galaxy.dto.bo.GalaxyNftOrderBindBo;
import com.liquidnet.service.galaxy.dto.bo.GalaxySeriesNftInfoBo;
import com.liquidnet.service.galaxy.dto.param.GalaxyNftPublishAndBuyReqDto;
import com.liquidnet.service.galaxy.dto.param.GalaxyNftPublishAndBuyRespDto;
import com.liquidnet.service.galaxy.service.IGalaxyTradeService;
import com.liquidnet.service.galaxy.utils.GalaxyDataUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: GalaxyTradeBiz
* @Package com.liquidnet.service.galaxy.biz
* @Copyright: LightNet @ Copyright (c) 2022
* @date 2022/7/11 15:47
*/
@Slf4j
@Component
public class GalaxyTradeBiz {
@Autowired
private GalaxyDataUtils dataUtils;
@Resource(name = "galaxyTradeServiceImpl")
private IGalaxyTradeService galaxyTradeService;
/**
* 根据skuid和nftIndex判断是否切换nft购买订单
* @param skuid
* @param nftIndex
*/
public boolean isNeedSwitch(String skuid,String nftIndex){
String nums = dataUtils.getGoblinNumList(skuid);
if(StringUtil.isNotEmpty(nums)){
String[] numsArray = nums.split(",");
if(numsArray.length>0){
List<String> numsList = Arrays.asList(numsArray);
if(numsList.contains(nftIndex)){
return true;
}
}
}
return false;
}
/**
* 根据skuid和nftIndex判断是否切换nft购买订单
* @param skuid
* @param nftIndex
*/
public void switchBuyRouterBySkuId(String skuid, String nftIndex, GalaxySeriesNftInfoBo seriesNftInfoBo){
GalaxyNftPublishAndBuyReqDto reqDto = dataUtils.getGoblinNumDetails(skuid,nftIndex);
//设置绑定信息
GalaxyNftOrderBindBo nftOrderBindBo = GalaxyNftOrderBindBo.getNew();
nftOrderBindBo.setNftOrderPayId(reqDto.getNftOrderPayId());
nftOrderBindBo.setSeriesId(seriesNftInfoBo.getSeriesId());
nftOrderBindBo.setSeriesCode(seriesNftInfoBo.getSeriesCode());
nftOrderBindBo.setNftIdIndex(Integer.valueOf(nftIndex));
nftOrderBindBo.setRouterType(reqDto.getRouterType());
String nowTimeStr = DateUtil.Formatter.yyyyMMddHHmmss.format(LocalDateTime.now());
nftOrderBindBo.setCreatedAt(nowTimeStr);
dataUtils.setGalaxyNftOrderBindBo(reqDto.getRouterType(),reqDto.getNftOrderPayId(),nftOrderBindBo);
//执行nft购买订单切换
log.info("开始执行nft购买订单切换===>>>>> reqParam:{}", JsonUtils.toJson(reqDto));
ResponseDto<GalaxyNftPublishAndBuyRespDto> responseDto = galaxyTradeService.nftPublishAndBuy(reqDto);
log.info("执行nft购买订单切换结果===>>>>> response:{}",JsonUtils.toJson(responseDto));
}
}
...@@ -9,6 +9,7 @@ import com.liquidnet.commons.lang.util.*; ...@@ -9,6 +9,7 @@ import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.galaxy.biz.GalaxyBeanTransferBiz; import com.liquidnet.service.galaxy.biz.GalaxyBeanTransferBiz;
import com.liquidnet.service.galaxy.biz.GalaxyEnumBiz; import com.liquidnet.service.galaxy.biz.GalaxyEnumBiz;
import com.liquidnet.service.galaxy.biz.GalaxyTradeBiz;
import com.liquidnet.service.galaxy.constant.GalaxyEnum; import com.liquidnet.service.galaxy.constant.GalaxyEnum;
import com.liquidnet.service.galaxy.constant.GalaxyErrorEnum; import com.liquidnet.service.galaxy.constant.GalaxyErrorEnum;
import com.liquidnet.service.galaxy.dto.bo.GalaxyNftOrderBindBo; import com.liquidnet.service.galaxy.dto.bo.GalaxyNftOrderBindBo;
...@@ -29,6 +30,8 @@ import org.springframework.stereotype.Component; ...@@ -29,6 +30,8 @@ import org.springframework.stereotype.Component;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Date; import java.util.Date;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/** /**
* @author AnJiabin <anjiabin@zhengzai.tv> * @author AnJiabin <anjiabin@zhengzai.tv>
...@@ -57,6 +60,11 @@ public class ZxinTradeCommonBiz { ...@@ -57,6 +60,11 @@ public class ZxinTradeCommonBiz {
@Autowired @Autowired
private GalaxyBeanTransferBiz galaxyBeanTransferBiz; private GalaxyBeanTransferBiz galaxyBeanTransferBiz;
@Autowired
private GalaxyTradeBiz galaxyTradeBiz;
private ExecutorService executorService = Executors.newFixedThreadPool(10);
public ResponseDto<GalaxyNftPublishAndBuyRespDto> nftPublishAndBuy(GalaxyNftPublishAndBuyReqDto reqDto) { public ResponseDto<GalaxyNftPublishAndBuyRespDto> nftPublishAndBuy(GalaxyNftPublishAndBuyReqDto reqDto) {
log.info("开始执行nftPublishAndBuy 请求参数:{}",reqDto.toString()); log.info("开始执行nftPublishAndBuy 请求参数:{}",reqDto.toString());
//获取用户信息 //获取用户信息
...@@ -141,6 +149,17 @@ public class ZxinTradeCommonBiz { ...@@ -141,6 +149,17 @@ public class ZxinTradeCommonBiz {
//发行失败 //发行失败
throw new GalaxyNftPublishException(GalaxyErrorEnum.NFT_PUBLISH_ERROR.getCode(),"该sku:"+reqDto.getSkuId()+" 总共"+seriesNftInfoBo.getNftTotalCount()+"个NFT已经发行完毕,没有剩余库存!"); throw new GalaxyNftPublishException(GalaxyErrorEnum.NFT_PUBLISH_ERROR.getCode(),"该sku:"+reqDto.getSkuId()+" 总共"+seriesNftInfoBo.getNftTotalCount()+"个NFT已经发行完毕,没有剩余库存!");
} }
//判断是否切换订单
while(galaxyTradeBiz.isNeedSwitch(reqDto.getSkuId(),String.valueOf(nftIdNo))){
long finalNftIdNo = nftIdNo;
//开启新线程去执行购买
executorService.submit(() -> {
galaxyTradeBiz.switchBuyRouterBySkuId(reqDto.getSkuId(),String.valueOf(finalNftIdNo),seriesNftInfoBo);
});
nftIdNo = dataUtils.incrNftIdNo(reqDto.getRouterType(),reqDto.getSkuId());
}
nftOrderBindBo = GalaxyNftOrderBindBo.getNew(); nftOrderBindBo = GalaxyNftOrderBindBo.getNew();
nftOrderBindBo.setNftOrderPayId(reqDto.getNftOrderPayId()); nftOrderBindBo.setNftOrderPayId(reqDto.getNftOrderPayId());
nftOrderBindBo.setSeriesId(seriesNftInfoBo.getSeriesId()); nftOrderBindBo.setSeriesId(seriesNftInfoBo.getSeriesId());
......
...@@ -8,8 +8,10 @@ import com.liquidnet.service.galaxy.biz.GalaxyBeanTransferBiz; ...@@ -8,8 +8,10 @@ import com.liquidnet.service.galaxy.biz.GalaxyBeanTransferBiz;
import com.liquidnet.service.galaxy.constant.GalaxyConstant; import com.liquidnet.service.galaxy.constant.GalaxyConstant;
import com.liquidnet.service.galaxy.constant.GalaxyEnum; import com.liquidnet.service.galaxy.constant.GalaxyEnum;
import com.liquidnet.service.galaxy.dto.bo.*; import com.liquidnet.service.galaxy.dto.bo.*;
import com.liquidnet.service.galaxy.dto.param.GalaxyNftPublishAndBuyReqDto;
import com.liquidnet.service.galaxy.dto.vo.mongo.GalaxyNftOrderFailLogVo; import com.liquidnet.service.galaxy.dto.vo.mongo.GalaxyNftOrderFailLogVo;
import com.liquidnet.service.galaxy.dto.vo.mongo.GalaxyNftTradeVo; import com.liquidnet.service.galaxy.dto.vo.mongo.GalaxyNftTradeVo;
import com.liquidnet.service.goblin.constant.GoblinRedisConst;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.MongoTemplate;
...@@ -478,4 +480,25 @@ public abstract class AbstractDataUtils { ...@@ -478,4 +480,25 @@ public abstract class AbstractDataUtils {
return null; return null;
} }
} }
//获取sku对应预留号码list
public String getGoblinNumList(String skuId){
String redisKey = GoblinRedisConst.GOBLIN_NUM_LIST.concat(":").concat(skuId);
Object obj = this.getRedisUtil().get(redisKey);
if(obj!=null){
return obj.toString();
}
return null;
}
//$key+$num+$skuId 根据num+skuId获取DTO
public GalaxyNftPublishAndBuyReqDto getGoblinNumDetails(String skuId, String nftIndex){
String redisKey = GoblinRedisConst.GOBLIN_NUM_DETAILS.concat(nftIndex).concat(skuId);
Object obj = this.getRedisUtil().get(redisKey);
if(obj!=null){
return (GalaxyNftPublishAndBuyReqDto)obj;
}
return null;
}
} }
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