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

Commit 11fed098 authored by 张国柄's avatar 张国柄

+api:藏品转赠结果查询队列及处理;

parent 25b14257
...@@ -20,6 +20,7 @@ public class GoblinUserDigitalArtworkVo implements Serializable, Cloneable { ...@@ -20,6 +20,7 @@ public class GoblinUserDigitalArtworkVo implements Serializable, Cloneable {
private String releaseAt; private String releaseAt;
private String tradingTxhash; private String tradingTxhash;
private String tradingAt; private String tradingAt;
private String receiverUid;
private String transferOrderId; private String transferOrderId;
private String transferState; private String transferState;
private Integer source; private Integer source;
......
...@@ -36,6 +36,8 @@ public class ConsumerCommonBizRedisStreamConfig extends RedisStreamConfig { ...@@ -36,6 +36,8 @@ public class ConsumerCommonBizRedisStreamConfig extends RedisStreamConfig {
ConsumerGoblinBizArtworkUplReceiver consumerGoblinBizArtworkUplReceiver; ConsumerGoblinBizArtworkUplReceiver consumerGoblinBizArtworkUplReceiver;
@Autowired @Autowired
ConsumerGoblinBizArtworkClqReceiver consumerGoblinBizArtworkClqReceiver; ConsumerGoblinBizArtworkClqReceiver consumerGoblinBizArtworkClqReceiver;
@Autowired
ConsumerGoblinBizArtworkTransQueryReceiver consumerGoblinBizArtworkTransQueryReceiver;
/*------galaxy------*/ /*------galaxy------*/
@Autowired @Autowired
ConsumerGalaxyJsonNftPublishAndBuyReceiver jsonNftPublishAndBuyReceiver; ConsumerGalaxyJsonNftPublishAndBuyReceiver jsonNftPublishAndBuyReceiver;
...@@ -136,6 +138,22 @@ public class ConsumerCommonBizRedisStreamConfig extends RedisStreamConfig { ...@@ -136,6 +138,22 @@ public class ConsumerCommonBizRedisStreamConfig extends RedisStreamConfig {
return subscriptionList; return subscriptionList;
} }
@Bean
public List<Subscription> subscriptionGoblinBizArtworkTransQuery(RedisConnectionFactory factory) {
List<Subscription> subscriptionList = new ArrayList<>();
MQConst.GoblinQueue stream = MQConst.GoblinQueue.BIZ_ARTWORK_TRANS_QUERY;
this.initStream(stringRedisTemplate, stream.getKey(), stream.getGroup());
for (int i = 0; i < 1; i++) {
StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer = this.buildStreamMessageListenerContainer(factory);
subscriptionList.add(listenerContainer.receiveAutoAck(
Consumer.from(stream.getGroup(), getConsumerName(stream.name() + i)),
StreamOffset.create(stream.getKey(), ReadOffset.lastConsumed()), consumerGoblinBizArtworkTransQueryReceiver
));
listenerContainer.start();
}
return subscriptionList;
}
/** /**
* galaxy发行和购买 * galaxy发行和购买
* @param factory * @param factory
......
...@@ -77,12 +77,12 @@ public class ConsumerGoblinBizArtworkClqReceiver extends AbstractBizRedisReceive ...@@ -77,12 +77,12 @@ public class ConsumerGoblinBizArtworkClqReceiver extends AbstractBizRedisReceive
// 失败重新入队逻辑改至`被调用API`实现 // 失败重新入队逻辑改至`被调用API`实现
// JsonNode postRespJNode = JsonUtils.fromJson(postRespStr, JsonNode.class), postRespCode; // JsonNode postRespJNode = JsonUtils.fromJson(postRespStr, JsonNode.class), postRespCode;
// if (null == postRespJNode || null == (postRespCode = postRespJNode.get("code")) || !postRespCode.asText().equals("0")) { // if (null == postRespJNode || null == (postRespCode = postRespJNode.get("code")) || !postRespCode.asText().equals("0")) {
// log.warn("#NFT声明查询:处理失败[paramsStr={},postRespStr={}]", postDataMap, postRespStr); // log.warn("#藏品声明查询:处理失败[paramsStr={},postRespStr={}]", postDataMap, postRespStr);
// return false; // return false;
// } // }
return true; return true;
} catch (Exception e) { } catch (Exception e) {
log.error("Ex.NFT声明查询:处理异常[url={},paramsStr={}],ex:{}", postUrl, postDataMap, e.getMessage()); log.error("Ex.藏品声明查询:处理异常[url={},paramsStr={}],ex:{}", postUrl, postDataMap, e.getMessage());
return false; return false;
} }
} }
......
package com.liquidnet.service.consumer.base.receiver;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.HttpUtil;
import com.liquidnet.service.base.constant.MQConst;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.connection.stream.StreamRecords;
import org.springframework.stereotype.Component;
import org.springframework.util.LinkedMultiValueMap;
import java.time.Duration;
import java.time.LocalDateTime;
import java.util.HashMap;
@Slf4j
@Component
public class ConsumerGoblinBizArtworkTransQueryReceiver extends AbstractBizRedisReceiver {
@Value("${liquidnet.service.goblin.url}")
private String serviceGoblinUrl;
@Override
protected boolean consumerMessageHandler(String msg) {
boolean aBoolean = false;
try {
if (StringUtils.isEmpty(msg)) {
log.warn("CONSUMER MSG NULL_MSG ==> [{}]:{}", this.getRedisStreamKey(), msg);
aBoolean = true;
} else {
String[] msgArr = msg.split(",");
String bizId = msgArr[0], time = msgArr.length == 2 ? msgArr[1] : null;
LocalDateTime now = LocalDateTime.now(), checkTime = now.minusSeconds(15);
LocalDateTime createAt = StringUtils.isEmpty(time) ? checkTime : LocalDateTime.parse(time);
long durationToMillis = Duration.between(createAt, checkTime).toMillis();
if (durationToMillis >= 0) {
aBoolean = this.bizArtworkTransQueryProcessing(bizId);
} else {
try {
Thread.sleep(Math.abs(durationToMillis));
} catch (InterruptedException ignored) {
}
aBoolean = this.bizArtworkTransQueryProcessing(bizId);
}
}
} catch (Exception e) {
log.error("CONSUMER MSG EX_HANDLE ==> [{}]:{}", this.getRedisStreamKey(), msg, e);
} finally {
if (!aBoolean) {
HashMap<String, String> map = CollectionUtil.mapStringString();
map.put(MQConst.QUEUE_MESSAGE_KEY, msg);
stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(this.getRedisStreamKey()));
}
}
return aBoolean;
}
@Override
protected String getRedisStreamKey() {
return MQConst.GoblinQueue.BIZ_ARTWORK_CLQ.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.GoblinQueue.BIZ_ARTWORK_CLQ.getGroup();
}
private boolean bizArtworkTransQueryProcessing(String transferOrderId) {
String postUrl = serviceGoblinUrl + "/goblin/que/artwork/transQuery";
LinkedMultiValueMap<String, String> postDataMap = CollectionUtil.linkedMultiValueMapStringString();
try {
postDataMap.add("transferOrderId", transferOrderId);
String postRespStr = HttpUtil.post(postUrl, postDataMap);
// 失败重新入队逻辑改至`被调用API`实现
// JsonNode postRespJNode = JsonUtils.fromJson(postRespStr, JsonNode.class), postRespCode;
// if (null == postRespJNode || null == (postRespCode = postRespJNode.get("code")) || !postRespCode.asText().equals("0")) {
// log.warn("#藏品转赠结果查询:处理失败[paramsStr={},postRespStr={}]", postDataMap, postRespStr);
// return false;
// }
return true;
} catch (Exception e) {
log.error("Ex.藏品转赠结果查询:处理异常[url={},paramsStr={}],ex:{}", postUrl, postDataMap, e.getMessage());
return false;
}
}
/* ------------------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------------------ */
}
...@@ -61,12 +61,12 @@ public class ConsumerGoblinBizArtworkUplReceiver extends AbstractBizRedisReceive ...@@ -61,12 +61,12 @@ public class ConsumerGoblinBizArtworkUplReceiver extends AbstractBizRedisReceive
// 失败重新入队逻辑改至`被调用API`实现 // 失败重新入队逻辑改至`被调用API`实现
// JsonNode postRespJNode = JsonUtils.fromJson(postRespStr, JsonNode.class), postRespCode; // JsonNode postRespJNode = JsonUtils.fromJson(postRespStr, JsonNode.class), postRespCode;
// if (null == postRespJNode || null == (postRespCode = postRespJNode.get("code")) || !postRespCode.asText().equals("0")) { // if (null == postRespJNode || null == (postRespCode = postRespJNode.get("code")) || !postRespCode.asText().equals("0")) {
// log.warn("#NFT素材上传:处理失败[paramsStr={},postRespStr={}]", postDataMap, postRespStr); // log.warn("#藏品素材上传:处理失败[paramsStr={},postRespStr={}]", postDataMap, postRespStr);
// return false; // return false;
// } // }
return true; return true;
} catch (Exception e) { } catch (Exception e) {
log.error("Ex.NFT素材上传:处理异常[url={},paramsStr={}],ex:{}", postUrl, postDataMap, e.getMessage()); log.error("Ex.藏品素材上传:处理异常[url={},paramsStr={}],ex:{}", postUrl, postDataMap, e.getMessage());
return false; return false;
} }
} }
......
...@@ -1153,7 +1153,9 @@ create table goblin_user_digital_artwork ...@@ -1153,7 +1153,9 @@ create table goblin_user_digital_artwork
) engine = InnoDB comment '用户数字藏品信息'; ) engine = InnoDB comment '用户数字藏品信息';
# -- >>------------------------------------------------------------------------------------ |20220817数字藏品转赠安全密码 # -- >>------------------------------------------------------------------------------------ |20220817数字藏品转赠安全密码
alter table goblin_user_digital_artwork alter table goblin_user_digital_artwork
add transfer_order_id varchar(20) null comment '转赠订单号' after trading_at; add receiver_uid varchar(20) null comment '受赠人UID' after trading_at;
alter table goblin_user_digital_artwork
add transfer_order_id varchar(20) null comment '转赠订单号' after receiver_uid;
alter table goblin_user_digital_artwork alter table goblin_user_digital_artwork
add transfer_state varchar(20) null comment '转赠状态[PENDING|SUCCESS]' after transfer_order_id; add transfer_state varchar(20) null comment '转赠状态[PENDING|SUCCESS]' after transfer_order_id;
alter table goblin_user_digital_artwork alter table goblin_user_digital_artwork
......
...@@ -172,7 +172,7 @@ public class GoblinUserDigitalArtworkController { ...@@ -172,7 +172,7 @@ public class GoblinUserDigitalArtworkController {
if (1 != userDigitalArtworkVo.getState()) return ResponseDto.failure(ErrorMapping.get("140107"));// 未上链 if (1 != userDigitalArtworkVo.getState()) return ResponseDto.failure(ErrorMapping.get("140107"));// 未上链
String transferState = userDigitalArtworkVo.getTransferState(); String transferState = userDigitalArtworkVo.getTransferState();
if (StringUtils.isNotEmpty(transferState)) return ResponseDto.success(transferState);// 转赠状态不为空,标记已转赠或转赠中 if (StringUtils.isNotEmpty(transferState)) return ResponseDto.success(transferState);// 转赠状态不为空,标记已转赠或转赠中
String[] receiverArr = null; String[] receiverArr;
try { try {
receiverArr = DESUtils.DES().decrypt(receiver).split(","); receiverArr = DESUtils.DES().decrypt(receiver).split(",");
} catch (Exception e) { } catch (Exception e) {
......
...@@ -2,6 +2,7 @@ package com.liquidnet.service.goblin.controller.Inner; ...@@ -2,6 +2,7 @@ package com.liquidnet.service.goblin.controller.Inner;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.service.impl.inner.GoblinQueBizArtworkClqService; import com.liquidnet.service.goblin.service.impl.inner.GoblinQueBizArtworkClqService;
import com.liquidnet.service.goblin.service.impl.inner.GoblinQueBizArtworkTransQueryService;
import com.liquidnet.service.goblin.service.impl.inner.GoblinQueBizArtworkUplService; import com.liquidnet.service.goblin.service.impl.inner.GoblinQueBizArtworkUplService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
...@@ -27,22 +28,33 @@ public class GoblinQueBizArtworkController { ...@@ -27,22 +28,33 @@ public class GoblinQueBizArtworkController {
private GoblinQueBizArtworkUplService goblinQueBizArtworkUplService; private GoblinQueBizArtworkUplService goblinQueBizArtworkUplService;
@Autowired @Autowired
private GoblinQueBizArtworkClqService goblinQueBizArtworkClqService; private GoblinQueBizArtworkClqService goblinQueBizArtworkClqService;
@Autowired
private GoblinQueBizArtworkTransQueryService goblinQueBizArtworkTransQueryService;
@PostMapping("upl") @PostMapping("upl")
@ApiOperation("藏品上传声明") @ApiOperation("藏品上传声明")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "skuId", value = "藏品ID", example = "1"), @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "skuId", value = "藏品SKUID", example = "1"),
}) })
public ResponseDto<String> bizArtworkUpl(@NotBlank(message = "藏品ID不能为空") @RequestParam String skuId) { public ResponseDto<String> bizArtworkUpl(@NotBlank(message = "藏品SKUID不能为空") @RequestParam String skuId) {
return goblinQueBizArtworkUplService.bizArtworkUplProcessing(skuId); return goblinQueBizArtworkUplService.bizArtworkUplProcessing(skuId);
} }
@PostMapping("clq") @PostMapping("clq")
@ApiOperation("藏品声明查询") @ApiOperation("藏品声明查询")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "skuId", value = "藏品ID", example = "1"), @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "skuId", value = "藏品SKUID", example = "1"),
}) })
public ResponseDto<String> bizArtworkClq(@NotBlank(message = "藏品ID不能为空") @RequestParam String skuId) { public ResponseDto<String> bizArtworkClq(@NotBlank(message = "藏品SKUID不能为空") @RequestParam String skuId) {
return goblinQueBizArtworkClqService.bizArtworkClqProcessing(skuId); return goblinQueBizArtworkClqService.bizArtworkClqProcessing(skuId);
} }
@PostMapping("transQuery")
@ApiOperation("藏品转赠结果查询")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "artworkId", value = "藏品ID", example = "1"),
})
public ResponseDto<String> bizArtworkTransQuery(@NotBlank(message = "藏品转赠订单号不能为空") @RequestParam String artworkId) {
return goblinQueBizArtworkTransQueryService.bizArtworkTransQueryProcessing(artworkId);
}
} }
...@@ -174,47 +174,6 @@ public class GoblinUserDigitalArtworkServiceImpl implements IGoblinUserDigitalAr ...@@ -174,47 +174,6 @@ public class GoblinUserDigitalArtworkServiceImpl implements IGoblinUserDigitalAr
return null; return null;
} }
// @Override
// public GoblinUserDigitalArtworkListVo unboxingForBuyOrExchange(String uid, GoblinUserDigitalArtworkVo userDigitalArtworkVo) {
// String orderId = userDigitalArtworkVo.getOrderId();
// GoblinNftOrderVo goblinNftOrder = goblinRedisUtils.getGoblinNftOrder(orderId);
// GoblinGoodsSkuInfoVo unboxSkuInfoVo = goblinRedisUtils.getGoodsSkuInfoVo(goblinNftOrder.getBoxSkuId());
//
// GoblinUserDigitalArtworkListVo unboxDigitalArtworkListVo = GoblinUserDigitalArtworkListVo.getNew();
//// unboxDigitalArtworkListVo.setArtworkId();
// unboxDigitalArtworkListVo.setName(unboxSkuInfoVo.getName());
// unboxDigitalArtworkListVo.setSubtitle(unboxSkuInfoVo.getSubtitle());
// unboxDigitalArtworkListVo.setCoverPic(unboxSkuInfoVo.getSkuPic());
//// unboxDigitalArtworkListVo.setSource(userDigitalArtworkVo.getSource());
//// unboxDigitalArtworkListVo.setState(0);
//// unboxDigitalArtworkListVo.setCreatedAt();
//// unboxDigitalArtworkListVo.setUnbox("0");
//// unboxDigitalArtworkListVo.setOpeningTime(now);
//
// LocalDateTime now = LocalDateTime.now();
// userDigitalArtworkVo.setState(1);
// userDigitalArtworkVo.setDelFlg("1");// 盲盒开启后直接删除
// userDigitalArtworkVo.setOpeningAt(now);
// userDigitalArtworkVo.setUpdatedAt(now);
// userDigitalArtworkVo.setDeletedAt(now);
//
//// if (goblinMongoUtils.updateUserDigitalArtworkVoByUnboxing(userDigitalArtworkVo)) {
// goblinRedisUtils.setexUserDigitalArtworkVo(userDigitalArtworkVo);
//
// String artworkId = userDigitalArtworkVo.getArtworkId();
// GoblinQueueBizArtworkGenDto queueBizArtworkGenDto = GoblinQueueBizArtworkGenDto.getNew();
// queueBizArtworkGenDto.setUid(uid);
// queueBizArtworkGenDto.setSkuId(unboxSkuInfoVo.getSkuId());
// queueBizArtworkGenDto.setOrderId(orderId);
// queueBizArtworkGenDto.setSource(userDigitalArtworkVo.getSource());
// queueBizArtworkGenDto.setFromArtId(artworkId);
// queueUtils.sendMsgByRedis(MQConst.GoblinQueue.BIZ_ARTWORK_GEN.getKey(), queueBizArtworkGenDto.toJson());
// queueUtils.sendMsgByRedis(MQConst.GoblinQueue.SQL_ARTWORK_GEN.getKey(),
// SqlMapping.get("goblin_user_digital_artwork.update_for_unboxing", now, now, now, artworkId));
//// }
// return unboxDigitalArtworkListVo;
// }
@Override @Override
public GoblinUserDigitalArtworkListVo unboxingForBuyOrExchange(String uid, GoblinUserDigitalArtworkVo userDigitalArtworkBoxVo) { public GoblinUserDigitalArtworkListVo unboxingForBuyOrExchange(String uid, GoblinUserDigitalArtworkVo userDigitalArtworkBoxVo) {
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
...@@ -354,27 +313,13 @@ public class GoblinUserDigitalArtworkServiceImpl implements IGoblinUserDigitalAr ...@@ -354,27 +313,13 @@ public class GoblinUserDigitalArtworkServiceImpl implements IGoblinUserDigitalAr
@Override @Override
public boolean transfer(GoblinUserDigitalArtworkVo userDigitalArtworkVo, String routerType, String[] receiverArr) { public boolean transfer(GoblinUserDigitalArtworkVo userDigitalArtworkVo, String routerType, String[] receiverArr) {
userDigitalArtworkVo.setTransferState(GoblinStatusConst.TransferState.PENDING.name()); userDigitalArtworkVo.setReceiverUid(receiverArr[0]);
userDigitalArtworkVo.setTransferOrderId(IDGenerator.nextSnowId()); userDigitalArtworkVo.setTransferOrderId(IDGenerator.nextSnowId());
userDigitalArtworkVo.setTransferState(GoblinStatusConst.TransferState.PENDING.name());
userDigitalArtworkVo.setTransferUser(SensitizeUtil.custom(receiverArr[1], 0, 1) + String.format("(%s)", SensitizeUtil.custom(receiverArr[2], 3, 4))); userDigitalArtworkVo.setTransferUser(SensitizeUtil.custom(receiverArr[1], 0, 1) + String.format("(%s)", SensitizeUtil.custom(receiverArr[2], 3, 4)));
if (goblinRedisUtils.setUserDigitalArtworkVo(userDigitalArtworkVo)) { if (goblinRedisUtils.setUserDigitalArtworkVo(userDigitalArtworkVo)) {
LocalDateTime nowTime = LocalDateTime.now(); LocalDateTime nowTime = LocalDateTime.now();
// GoblinUserDigitalArtworkVo receiverDigitalArtworkVo = GoblinUserDigitalArtworkVo.getNew();
// receiverDigitalArtworkVo.setArtworkId(IDGenerator.nextSnowId());
// receiverDigitalArtworkVo.setSkuId(userDigitalArtworkVo.getSkuId());
// receiverDigitalArtworkVo.setUid(receiverArr[0]);
// receiverDigitalArtworkVo.setOrderId(userDigitalArtworkVo.getTransferOrderId());
// receiverDigitalArtworkVo.setSource(6);
// receiverDigitalArtworkVo.setState(1);
// receiverDigitalArtworkVo.setDelFlg("0");
// receiverDigitalArtworkVo.setCreatedAt(nowTime);
// receiverDigitalArtworkVo.setAuthor(userDigitalArtworkVo.getAuthor());
// receiverDigitalArtworkVo.setPublisher(userDigitalArtworkVo.getPublisher());
//
// goblinRedisUtils.setUserDigitalArtworkVo(receiverDigitalArtworkVo);
GalaxyNftTransferReqDto galaxyNftTransferReqDto = GalaxyNftTransferReqDto.getNew(); GalaxyNftTransferReqDto galaxyNftTransferReqDto = GalaxyNftTransferReqDto.getNew();
galaxyNftTransferReqDto.setRouterType(routerType); galaxyNftTransferReqDto.setRouterType(routerType);
galaxyNftTransferReqDto.setNftId(userDigitalArtworkVo.getNftId()); galaxyNftTransferReqDto.setNftId(userDigitalArtworkVo.getNftId());
...@@ -383,7 +328,7 @@ public class GoblinUserDigitalArtworkServiceImpl implements IGoblinUserDigitalAr ...@@ -383,7 +328,7 @@ public class GoblinUserDigitalArtworkServiceImpl implements IGoblinUserDigitalAr
galaxyNftTransferReqDto.setTransOrderId(userDigitalArtworkVo.getTransferOrderId()); galaxyNftTransferReqDto.setTransOrderId(userDigitalArtworkVo.getTransferOrderId());
galaxyNftTransferReqDto.setReqTimestamp(DateUtil.Formatter.yyyyMMddHHmmss.format(nowTime)); galaxyNftTransferReqDto.setReqTimestamp(DateUtil.Formatter.yyyyMMddHHmmss.format(nowTime));
queueUtils.sendMsgByRedis(MQConst.GalaxyQueue.JSON_NFT_TRANSFER.getKey(), JsonUtils.toJson(galaxyNftTransferReqDto)); queueUtils.sendMsgByRedis(MQConst.GalaxyQueue.JSON_NFT_TRANSFER.getKey(), JsonUtils.toJson(galaxyNftTransferReqDto));
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.BIZ_ARTWORK_TRANS_QUERY.getKey(), userDigitalArtworkVo.getTransferOrderId().concat(",").concat(String.valueOf(LocalDateTime.now()))); queueUtils.sendMsgByRedis(MQConst.GoblinQueue.BIZ_ARTWORK_TRANS_QUERY.getKey(), userDigitalArtworkVo.getArtworkId().concat(",").concat(String.valueOf(LocalDateTime.now())));
// Mongo同步更新 // Mongo同步更新
GoblinQueueBizMongoDto goblinQueueBizMongoDto = GoblinQueueBizMongoDto.getNew(); GoblinQueueBizMongoDto goblinQueueBizMongoDto = GoblinQueueBizMongoDto.getNew();
...@@ -396,14 +341,11 @@ public class GoblinUserDigitalArtworkServiceImpl implements IGoblinUserDigitalAr ...@@ -396,14 +341,11 @@ public class GoblinUserDigitalArtworkServiceImpl implements IGoblinUserDigitalAr
// Mysql持久化 // Mysql持久化
LinkedList<String> toMqSqls = CollectionUtil.linkedListString(); LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
// toMqSqls.add(SqlMapping.get("goblin_user_digital_artwork.insert"));
// LinkedList<Object[]> initUserDigitalArtworkObjs = CollectionUtil.linkedListObjectArr();
// initUserDigitalArtworkObjs.add(new Object[]{receiverDigitalArtworkVo.getArtworkId(),
// receiverDigitalArtworkVo.getSkuId(), receiverDigitalArtworkVo.getUid(), receiverDigitalArtworkVo.getOrderId(),
// receiverDigitalArtworkVo.getSource(), receiverDigitalArtworkVo.getState(), receiverDigitalArtworkVo.getCreatedAt()});
toMqSqls.add(SqlMapping.get("goblin_user_digital_artwork.update_for_transfer")); toMqSqls.add(SqlMapping.get("goblin_user_digital_artwork.update_for_transfer"));
LinkedList<Object[]> updateUserDigitalArtworkObjs = CollectionUtil.linkedListObjectArr(); LinkedList<Object[]> updateUserDigitalArtworkObjs = CollectionUtil.linkedListObjectArr();
updateUserDigitalArtworkObjs.add(new Object[]{userDigitalArtworkVo.getTransferState(), nowTime, userDigitalArtworkVo.getArtworkId()}); updateUserDigitalArtworkObjs.add(new Object[]{userDigitalArtworkVo.getReceiverUid(),
userDigitalArtworkVo.getTransferOrderId(), userDigitalArtworkVo.getTransferState(), nowTime, userDigitalArtworkVo.getArtworkId()
});
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.SQL_ARTWORK_GEN.getKey(), SqlMapping.gets(toMqSqls, updateUserDigitalArtworkObjs)); queueUtils.sendMsgByRedis(MQConst.GoblinQueue.SQL_ARTWORK_GEN.getKey(), SqlMapping.gets(toMqSqls, updateUserDigitalArtworkObjs));
} }
return false; return false;
......
...@@ -53,14 +53,14 @@ public class GoblinQueBizArtworkClqService { ...@@ -53,14 +53,14 @@ public class GoblinQueBizArtworkClqService {
try { try {
GoblinGoodsSkuInfoVo mgtGoodsSkuInfoVo = goblinMongoUtils.getGoodsSkuInfoVo(skuId); GoblinGoodsSkuInfoVo mgtGoodsSkuInfoVo = goblinMongoUtils.getGoodsSkuInfoVo(skuId);
if (null == mgtGoodsSkuInfoVo) { if (null == mgtGoodsSkuInfoVo) {
log.warn("#NFT声明查询:藏品SKU不存在[skuId={}]", skuId); log.warn("#藏品声明查询:藏品SKU不存在[skuId={}]", skuId);
return ResponseDto.success(String.format("藏品SKU不存在[skuId:%s]", skuId)); return ResponseDto.success(String.format("藏品SKU不存在[skuId:%s]", skuId));
} }
int skuType = mgtGoodsSkuInfoVo.getSkuType(), upchain = mgtGoodsSkuInfoVo.getUpchain(); int skuType = mgtGoodsSkuInfoVo.getSkuType(), upchain = mgtGoodsSkuInfoVo.getUpchain();
String unbox = mgtGoodsSkuInfoVo.getUnbox(); String unbox = mgtGoodsSkuInfoVo.getUnbox();
// 非数字藏品 || 盲盒 || 非声明中 || 已有声明系列ID // 非数字藏品 || 盲盒 || 非声明中 || 已有声明系列ID
if (1 != skuType || !"0".equals(unbox) || 9 != upchain || StringUtils.isNotEmpty(mgtGoodsSkuInfoVo.getSeriesId())) { if (1 != skuType || !"0".equals(unbox) || 9 != upchain || StringUtils.isNotEmpty(mgtGoodsSkuInfoVo.getSeriesId())) {
log.warn("#NFT声明查询:藏品SKU无效或已声明[skuId={},skuType={},unbox={},upchain={},seriesId={}]", log.warn("#藏品声明查询:藏品SKU无效或已声明[skuId={},skuType={},unbox={},upchain={},seriesId={}]",
skuId, skuType, unbox, upchain, mgtGoodsSkuInfoVo.getSeriesId()); skuId, skuType, unbox, upchain, mgtGoodsSkuInfoVo.getSeriesId());
return ResponseDto.success(String.format("藏品SKU无效或已声明[skuId:%s]", skuId)); return ResponseDto.success(String.format("藏品SKU无效或已声明[skuId:%s]", skuId));
} }
...@@ -93,7 +93,7 @@ public class GoblinQueBizArtworkClqService { ...@@ -93,7 +93,7 @@ public class GoblinQueBizArtworkClqService {
sqlUpdateMap.put(MQConst.QUEUE_MESSAGE_KEY, SqlMapping.gets(toMqSqls, updateGoodsSkuNftObjs)); sqlUpdateMap.put(MQConst.QUEUE_MESSAGE_KEY, SqlMapping.gets(toMqSqls, updateGoodsSkuNftObjs));
redisDataSourceUtil.getRedisQueueUtil().getStringRedisTemplate().opsForStream().add(StreamRecords.mapBacked(sqlUpdateMap).withStreamKey(MQConst.GoblinQueue.SQL_GOODS.getKey())); redisDataSourceUtil.getRedisQueueUtil().getStringRedisTemplate().opsForStream().add(StreamRecords.mapBacked(sqlUpdateMap).withStreamKey(MQConst.GoblinQueue.SQL_GOODS.getKey()));
} catch (Exception e) { } catch (Exception e) {
log.error("Ex.NFT声明查询:处理异常[skuId={}]", skuId, e); log.error("Ex.藏品声明查询:处理异常[skuId={}]", skuId, e);
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.BIZ_ARTWORK_CLQ.getKey(), skuId); queueUtils.sendMsgByRedis(MQConst.GoblinQueue.BIZ_ARTWORK_CLQ.getKey(), skuId);
return ResponseDto.failure(String.format("藏品声明查询异常[skuId:%s]", skuId));// 声明查询失败,重新入队处理 return ResponseDto.failure(String.format("藏品声明查询异常[skuId:%s]", skuId));// 声明查询失败,重新入队处理
} }
...@@ -114,12 +114,12 @@ public class GoblinQueBizArtworkClqService { ...@@ -114,12 +114,12 @@ public class GoblinQueBizArtworkClqService {
requestDto.setRouterType(routerType); requestDto.setRouterType(routerType);
responseDto = galaxyArtworkService.seriesClaimResultQuery(requestDto); responseDto = galaxyArtworkService.seriesClaimResultQuery(requestDto);
if (!responseDto.isSuccess()) { if (!responseDto.isSuccess()) {
log.warn("#NFT声明查询:处理失败[paramsStr={},postRespStr={}]", JsonUtils.toJson(requestDto), JsonUtils.toJson(responseDto)); log.warn("#藏品声明查询:处理失败[paramsStr={},postRespStr={}]", JsonUtils.toJson(requestDto), JsonUtils.toJson(responseDto));
return null; return null;
} }
return responseDto.getData(); return responseDto.getData();
} catch (Exception e) { } catch (Exception e) {
log.error("Ex.NFT声明查询:处理异常[paramsStr={},postRespStr={}],ex:{}", JsonUtils.toJson(requestDto), JsonUtils.toJson(responseDto), e.getMessage()); log.error("Ex.藏品声明查询:处理异常[paramsStr={},postRespStr={}],ex:{}", JsonUtils.toJson(requestDto), JsonUtils.toJson(responseDto), e.getMessage());
return null; return null;
} }
} }
......
package com.liquidnet.service.goblin.service.impl.inner;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.galaxy.dto.param.GalaxyNftTransferQueryReqDto;
import com.liquidnet.service.galaxy.dto.param.GalaxyNftTransferQueryRespDto;
import com.liquidnet.service.galaxy.service.IGalaxyTradeService;
import com.liquidnet.service.goblin.constant.GoblinStatusConst;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsSkuInfoVo;
import com.liquidnet.service.goblin.dto.vo.GoblinUserDigitalArtworkVo;
import com.liquidnet.service.goblin.util.GoblinMongoUtils;
import com.liquidnet.service.goblin.util.GoblinRedisUtils;
import com.liquidnet.service.goblin.util.QueueUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.LinkedList;
@Slf4j
@Service
public class GoblinQueBizArtworkTransQueryService {
@Autowired
QueueUtils queueUtils;
@Autowired
GoblinRedisUtils goblinRedisUtils;
@Autowired
GoblinMongoUtils goblinMongoUtils;
@Resource(name = "galaxyTradeServiceImpl")
private IGalaxyTradeService galaxyTradeService;
public ResponseDto<String> bizArtworkTransQueryProcessing(String artworkId) {
try {
GoblinUserDigitalArtworkVo userDigitalArtworkVo = goblinRedisUtils.getUserDigitalArtworkVo(artworkId);
if (null == userDigitalArtworkVo) {
log.warn("#藏品转赠结果查询:藏品不存在[artworkId={}]", artworkId);
return ResponseDto.success(String.format("藏品不存在[artworkId:%s]", artworkId));
}
if (!GoblinStatusConst.TransferState.PENDING.name().equals(userDigitalArtworkVo.getTransferState())) {
log.warn("#藏品转赠结果查询:藏品非转赠中不处理[artworkId={},transferState={},transferOrderId={}]", artworkId, userDigitalArtworkVo.getTransferState(), userDigitalArtworkVo.getTransferOrderId());
return ResponseDto.success(String.format("藏品非转赠中不处理[artworkId:%s]", artworkId));
}
GoblinGoodsSkuInfoVo goodsSkuInfoVo = goblinRedisUtils.getGoodsSkuInfoVo(userDigitalArtworkVo.getSkuId());
GalaxyNftTransferQueryRespDto queryRespDto = this.queryNftTransferQueryRespDto(userDigitalArtworkVo.getTransferOrderId(), goodsSkuInfoVo.getRouteType());
if (null == queryRespDto || !"1".equals(queryRespDto.getTransferStatus())) {// 查询失败,重新入队处理
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.BIZ_ARTWORK_TRANS_QUERY.getKey(), userDigitalArtworkVo.getArtworkId());
return ResponseDto.failure(String.format("藏品转赠结果查询失败[artworkId:%s]", artworkId));
}
if (!userDigitalArtworkVo.getReceiverUid().equals(queryRespDto.getOwnerUserId())) {// 拥有者与受赠人不一致(特殊情况,重新入队处理)
log.warn("#藏品转赠结果查询:拥有者与受赠人不一致[artworkId={},receiverUid={},ownerUserId={}]", userDigitalArtworkVo.getArtworkId(), userDigitalArtworkVo.getReceiverUid(), queryRespDto.getOwnerUserId());
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.BIZ_ARTWORK_TRANS_QUERY.getKey(), artworkId);
return ResponseDto.failure(String.format("藏品转赠结果查询数据不一致[artworkId:%s]", artworkId));
}
LocalDateTime nowDateTime = LocalDateTime.now();
{// 转赠人藏品处理
userDigitalArtworkVo.setTransferState(GoblinStatusConst.TransferState.SUCCESS.name());
userDigitalArtworkVo.setDelFlg("1");
userDigitalArtworkVo.setDeletedAt(nowDateTime);
if (goblinMongoUtils.updateUserDigitalArtworkVoByTransQuery(userDigitalArtworkVo)) {// 转赠人藏品状态更新Mongo
goblinRedisUtils.setUserDigitalArtworkVo(userDigitalArtworkVo);// 转赠人藏品状态更新Redis
goblinRedisUtils.addSubUserDigitalArtworkCount(userDigitalArtworkVo.getUid(), -1);// 转赠人藏品数量处理Redis
goblinRedisUtils.resetUserDigitalArtworkIdsByMongo(userDigitalArtworkVo.getUid());// 转赠人藏品ID集合缓存重置Redis
} else {
log.warn("#藏品转赠结果查询:更新转赠人藏品Mongo数据失败[artworkId={}]", userDigitalArtworkVo.getArtworkId());
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.BIZ_ARTWORK_TRANS_QUERY.getKey(), artworkId);
return ResponseDto.failure(String.format("藏品转赠结果查询数据不一致[artworkId:%s]", artworkId));
}
}
GoblinUserDigitalArtworkVo receiverDigitalArtworkVo = GoblinUserDigitalArtworkVo.getNew();
{// 受赠人藏品处理
String transferTime = queryRespDto.getTransferTime(), transferHash = queryRespDto.getTransferHash();
receiverDigitalArtworkVo.setArtworkId(IDGenerator.nextSnowId());
receiverDigitalArtworkVo.setUid(userDigitalArtworkVo.getReceiverUid());
receiverDigitalArtworkVo.setSkuId(userDigitalArtworkVo.getSkuId());
receiverDigitalArtworkVo.setOrderId(userDigitalArtworkVo.getTransferOrderId());
receiverDigitalArtworkVo.setEditionSn(userDigitalArtworkVo.getEditionSn());
receiverDigitalArtworkVo.setNftId(userDigitalArtworkVo.getNftId());
//receiverDigitalArtworkVo.setReleaseTxhash();
//receiverDigitalArtworkVo.setReleaseAt();
receiverDigitalArtworkVo.setTradingTxhash(transferHash);
receiverDigitalArtworkVo.setTradingAt(transferTime);
//receiverDigitalArtworkVo.setReceiverUid();
//receiverDigitalArtworkVo.setTransferOrderId();
//receiverDigitalArtworkVo.setTransferState();
receiverDigitalArtworkVo.setSource(6);
receiverDigitalArtworkVo.setState(1);
receiverDigitalArtworkVo.setDelFlg("0");
//receiverDigitalArtworkVo.setOpeningAt();
receiverDigitalArtworkVo.setCreatedAt(nowDateTime);
//receiverDigitalArtworkVo.setUpdatedAt();
receiverDigitalArtworkVo.setAuthor(userDigitalArtworkVo.getAuthor());
receiverDigitalArtworkVo.setPublisher(userDigitalArtworkVo.getPublisher());
goblinMongoUtils.insertUserDigitalArtworkVo(receiverDigitalArtworkVo);// 受赠人藏品记录Mongo
goblinRedisUtils.setUserDigitalArtworkVo(receiverDigitalArtworkVo);// 受赠人藏品记录Redis
goblinRedisUtils.addUserDigitalArtworkIds(receiverDigitalArtworkVo.getUid(), receiverDigitalArtworkVo.getArtworkId());// 受赠人藏品ID列表记录Redis
goblinRedisUtils.addSubUserDigitalArtworkCount(receiverDigitalArtworkVo.getUid(), 1);// 受赠人藏品数量记录Redis
}
{// Mysql持久化
LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
toMqSqls.add(SqlMapping.get("goblin_user_digital_artwork.update_for_trans_query"));
LinkedList<Object[]> updateUserDigitalArtworkObjs = CollectionUtil.linkedListObjectArr();
updateUserDigitalArtworkObjs.add(new Object[]{userDigitalArtworkVo.getTransferState(), userDigitalArtworkVo.getDeletedAt(), userDigitalArtworkVo.getArtworkId()});
toMqSqls.add(SqlMapping.get("goblin_user_digital_artwork.insert_for_transfer"));
LinkedList<Object[]> initUserDigitalArtworkObjs = CollectionUtil.linkedListObjectArr();
initUserDigitalArtworkObjs.add(new Object[]{receiverDigitalArtworkVo.getArtworkId(),
receiverDigitalArtworkVo.getUid(), receiverDigitalArtworkVo.getSkuId(), receiverDigitalArtworkVo.getOrderId(),
receiverDigitalArtworkVo.getEditionSn(), receiverDigitalArtworkVo.getNftId(), receiverDigitalArtworkVo.getTradingTxhash(),
receiverDigitalArtworkVo.getTradingAt(), receiverDigitalArtworkVo.getSource(), receiverDigitalArtworkVo.getState(),
receiverDigitalArtworkVo.getCreatedAt()});
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.SQL_ARTWORK_GEN.getKey(), SqlMapping.gets(toMqSqls, updateUserDigitalArtworkObjs, initUserDigitalArtworkObjs));
}
} catch (Exception e) {
log.error("Ex.藏品转赠结果查询:处理异常[artworkId={}]", artworkId, e);
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.BIZ_ARTWORK_UPL.getKey(), artworkId);
return ResponseDto.failure(String.format("藏品转赠结果查询异常[artworkId:%s]", artworkId));
}
return ResponseDto.success();
}
/* ------------------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------------------ */
private GalaxyNftTransferQueryRespDto queryNftTransferQueryRespDto(String transferOrderId, String routerType) {
GalaxyNftTransferQueryReqDto requestDto = GalaxyNftTransferQueryReqDto.getNew();
ResponseDto<GalaxyNftTransferQueryRespDto> responseDto = null;
try {
requestDto.setTransOrderId(transferOrderId);
requestDto.setRouterType(routerType);
responseDto = galaxyTradeService.nftTransferQuery(requestDto);
if (!responseDto.isSuccess()) {
log.warn("#藏品转赠结果查询:处理失败[paramsStr={},postRespStr={}]", JsonUtils.toJson(requestDto), JsonUtils.toJson(responseDto));
return null;
}
return responseDto.getData();
} catch (Exception e) {
log.error("Ex.藏品转赠结果查询:处理异常[paramsStr={},postRespStr={}],ex:{}", JsonUtils.toJson(requestDto), JsonUtils.toJson(responseDto), e.getMessage());
return null;
}
}
/* ------------------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------------------ */
}
\ No newline at end of file
...@@ -57,14 +57,14 @@ public class GoblinQueBizArtworkUplService { ...@@ -57,14 +57,14 @@ public class GoblinQueBizArtworkUplService {
try { try {
GoblinGoodsSkuInfoVo mgtGoodsSkuInfoVo = goblinMongoUtils.getGoodsSkuInfoVo(skuId); GoblinGoodsSkuInfoVo mgtGoodsSkuInfoVo = goblinMongoUtils.getGoodsSkuInfoVo(skuId);
if (null == mgtGoodsSkuInfoVo) { if (null == mgtGoodsSkuInfoVo) {
log.warn("#NFT素材上传:藏品SKU不存在[skuId={}]", skuId); log.warn("#藏品素材上传:藏品SKU不存在[skuId={}]", skuId);
return ResponseDto.success(String.format("藏品SKU不存在[skuId:%s]", skuId)); return ResponseDto.success(String.format("藏品SKU不存在[skuId:%s]", skuId));
} }
int skuType = mgtGoodsSkuInfoVo.getSkuType(), upchain = mgtGoodsSkuInfoVo.getUpchain(); int skuType = mgtGoodsSkuInfoVo.getSkuType(), upchain = mgtGoodsSkuInfoVo.getUpchain();
String unbox = mgtGoodsSkuInfoVo.getUnbox(); String unbox = mgtGoodsSkuInfoVo.getUnbox();
// 非数字藏品 || 盲盒 || 非声明中 || 已有声明系列ID // 非数字藏品 || 盲盒 || 非声明中 || 已有声明系列ID
if (1 != skuType || !"0".equals(unbox) || 0 != upchain || StringUtils.isNotEmpty(mgtGoodsSkuInfoVo.getSeriesId())) { if (1 != skuType || !"0".equals(unbox) || 0 != upchain || StringUtils.isNotEmpty(mgtGoodsSkuInfoVo.getSeriesId())) {
log.warn("#NFT素材上传:藏品SKU无效或已声明[skuId={},skuType={},unbox={},upchain={},seriesId={}]", log.warn("#藏品素材上传:藏品SKU无效或已声明[skuId={},skuType={},unbox={},upchain={},seriesId={}]",
skuId, skuType, unbox, upchain, mgtGoodsSkuInfoVo.getSeriesId()); skuId, skuType, unbox, upchain, mgtGoodsSkuInfoVo.getSeriesId());
return ResponseDto.success(String.format("藏品SKU无效或已声明[skuId:%s]", skuId)); return ResponseDto.success(String.format("藏品SKU无效或已声明[skuId:%s]", skuId));
} }
...@@ -126,7 +126,7 @@ public class GoblinQueBizArtworkUplService { ...@@ -126,7 +126,7 @@ public class GoblinQueBizArtworkUplService {
toQueueBeClaimQueryMsg.put(MQConst.QUEUE_MESSAGE_KEY, skuId.concat(",").concat(String.valueOf(LocalDateTime.now()))); toQueueBeClaimQueryMsg.put(MQConst.QUEUE_MESSAGE_KEY, skuId.concat(",").concat(String.valueOf(LocalDateTime.now())));
streamOperations.add(StreamRecords.mapBacked(toQueueBeClaimQueryMsg).withStreamKey(MQConst.GoblinQueue.BIZ_ARTWORK_CLQ.getKey())); streamOperations.add(StreamRecords.mapBacked(toQueueBeClaimQueryMsg).withStreamKey(MQConst.GoblinQueue.BIZ_ARTWORK_CLQ.getKey()));
} catch (Exception e) { } catch (Exception e) {
log.error("Ex.NFT素材上传:处理异常[skuId={}]", skuId, e); log.error("Ex.藏品素材上传:处理异常[skuId={}]", skuId, e);
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.BIZ_ARTWORK_UPL.getKey(), skuId); queueUtils.sendMsgByRedis(MQConst.GoblinQueue.BIZ_ARTWORK_UPL.getKey(), skuId);
return ResponseDto.failure(String.format("藏品上传异常[skuId:%s]", skuId)); return ResponseDto.failure(String.format("藏品上传异常[skuId:%s]", skuId));
} }
...@@ -140,7 +140,7 @@ public class GoblinQueBizArtworkUplService { ...@@ -140,7 +140,7 @@ public class GoblinQueBizArtworkUplService {
/* ------------------------------------------------------------------------------------ */ /* ------------------------------------------------------------------------------------ */
/** /**
* NFT素材上传 * 藏品素材上传
* *
* @param nftUploadReqDto GalaxyNftUploadReqDto * @param nftUploadReqDto GalaxyNftUploadReqDto
* @return GalaxyNftUploadRespDto * @return GalaxyNftUploadRespDto
...@@ -150,12 +150,12 @@ public class GoblinQueBizArtworkUplService { ...@@ -150,12 +150,12 @@ public class GoblinQueBizArtworkUplService {
try { try {
responseDto = galaxyArtworkService.nftUpload(nftUploadReqDto); responseDto = galaxyArtworkService.nftUpload(nftUploadReqDto);
if (!responseDto.isSuccess()) { if (!responseDto.isSuccess()) {
log.warn("#NFT素材上传:处理失败[paramsStr={},postRespStr={}]", JsonUtils.toJson(nftUploadReqDto), JsonUtils.toJson(responseDto)); log.warn("#藏品素材上传:处理失败[paramsStr={},postRespStr={}]", JsonUtils.toJson(nftUploadReqDto), JsonUtils.toJson(responseDto));
return null; return null;
} }
return responseDto.getData(); return responseDto.getData();
} catch (Exception e) { } catch (Exception e) {
log.error("Ex.NFT素材上传:处理异常[paramsStr={},postRespStr={}],ex:{}", JsonUtils.toJson(nftUploadReqDto), JsonUtils.toJson(responseDto), e.getMessage()); log.error("Ex.藏品素材上传:处理异常[paramsStr={},postRespStr={}],ex:{}", JsonUtils.toJson(nftUploadReqDto), JsonUtils.toJson(responseDto), e.getMessage());
return null; return null;
} }
} }
...@@ -171,12 +171,12 @@ public class GoblinQueBizArtworkUplService { ...@@ -171,12 +171,12 @@ public class GoblinQueBizArtworkUplService {
try { try {
responseDto = galaxyArtworkService.seriesClaim(requestDto); responseDto = galaxyArtworkService.seriesClaim(requestDto);
if (!responseDto.isSuccess()) { if (!responseDto.isSuccess()) {
log.warn("#NFT系列声明:处理失败[paramsStr={},postRespStr={}]", JsonUtils.toJson(requestDto), JsonUtils.toJson(responseDto)); log.warn("#藏品系列声明:处理失败[paramsStr={},postRespStr={}]", JsonUtils.toJson(requestDto), JsonUtils.toJson(responseDto));
return null; return null;
} }
return responseDto.getData(); return responseDto.getData();
} catch (Exception e) { } catch (Exception e) {
log.error("Ex.NFT系列声明:处理异常[paramsStr={},postRespStr={}],ex:{}", JsonUtils.toJson(requestDto), JsonUtils.toJson(responseDto), e.getMessage()); log.error("Ex.藏品系列声明:处理异常[paramsStr={},postRespStr={}],ex:{}", JsonUtils.toJson(requestDto), JsonUtils.toJson(responseDto), e.getMessage());
return null; return null;
} }
} }
......
...@@ -1625,6 +1625,20 @@ public class GoblinMongoUtils { ...@@ -1625,6 +1625,20 @@ public class GoblinMongoUtils {
return updateResult.getModifiedCount() > 0; return updateResult.getModifiedCount() > 0;
} }
/**
* 转赠成功后,更新藏品信息
*/
public boolean updateUserDigitalArtworkVoByTransQuery(GoblinUserDigitalArtworkVo vo) {
UpdateResult updateResult = mongoTemplate.getCollection(GoblinUserDigitalArtworkVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("artworkId").is(vo.getArtworkId())).getQueryObject(),
Update.update("transferState", vo.getTransferState())
.set("delFlg", vo.getDelFlg())
.set("deletedAt", mongoConverter.convertToMongoType(vo.getDeletedAt()))
.getUpdateObject()
);
return updateResult.getModifiedCount() > 0;
}
public List<String> getPageUserDigitalArtworkIds(String uid, Integer pageNum, Integer pageSize) { public List<String> getPageUserDigitalArtworkIds(String uid, Integer pageNum, Integer pageSize) {
Criteria criteria = Criteria.where("uid").is(uid).and("delFlg").is("0"); Criteria criteria = Criteria.where("uid").is(uid).and("delFlg").is("0");
Query query = Query.query(criteria); Query query = Query.query(criteria);
......
...@@ -1985,9 +1985,24 @@ public class GoblinRedisUtils { ...@@ -1985,9 +1985,24 @@ public class GoblinRedisUtils {
return redisUtil.incr(GoblinRedisConst.USER_DIGITAL_ARTWORK_UNBOX.concat(artworkId), 1); return redisUtil.incr(GoblinRedisConst.USER_DIGITAL_ARTWORK_UNBOX.concat(artworkId), 1);
} }
/**
* 缓存用户累计藏品数
*
* @param uid 藏品拥有者
* @param num 增减藏品数量
* @return 用户剩余藏品数
*/
public long addSubUserDigitalArtworkCount(String uid, long num) {
if (num > 0) {
return redisUtil.incr(GoblinRedisConst.USER_DIGITAL_ARTWORK_CT.concat(uid), num);
} else {
return redisUtil.decr(GoblinRedisConst.USER_DIGITAL_ARTWORK_CT.concat(uid), Math.abs(num));
}
}
public long countUserDigitalArtwork(String uid) { public long countUserDigitalArtwork(String uid) {
Object o = redisUtil.get(GoblinRedisConst.USER_DIGITAL_ARTWORK_CT.concat(uid)); Object o = redisUtil.get(GoblinRedisConst.USER_DIGITAL_ARTWORK_CT.concat(uid));
return Objects.isNull(o) ? 0 : (int) o; return Objects.isNull(o) ? 0 : Math.max(((int) o), 0);
} }
public GoblinUserDigitalArtworkVo getUserDigitalArtworkVo(String artworkId) { public GoblinUserDigitalArtworkVo getUserDigitalArtworkVo(String artworkId) {
...@@ -2009,7 +2024,7 @@ public class GoblinRedisUtils { ...@@ -2009,7 +2024,7 @@ public class GoblinRedisUtils {
return redisUtil.set(GoblinRedisConst.USER_DIGITAL_ARTWORK.concat(vo.getArtworkId()), vo, 259200); return redisUtil.set(GoblinRedisConst.USER_DIGITAL_ARTWORK.concat(vo.getArtworkId()), vo, 259200);
} }
/* ----------------------------------- 我的藏品生成 ----------------------------------- */ /* ----------------------------------- 我的藏品管理 ----------------------------------- */
/** /**
* 标记订单藏品生成 * 标记订单藏品生成
...@@ -2025,21 +2040,29 @@ public class GoblinRedisUtils { ...@@ -2025,21 +2040,29 @@ public class GoblinRedisUtils {
return redisUtil.hasKey(GoblinRedisConst.USER_DIGITAL_ARTWORK_GENMARK.concat(uid).concat(skuId).concat(orderId)); return redisUtil.hasKey(GoblinRedisConst.USER_DIGITAL_ARTWORK_GENMARK.concat(uid).concat(skuId).concat(orderId));
} }
// /** /**
// * 缓存并更新用户藏品ID集合 * 重置Redis中用户藏品ID集合的缓存(降级Mongo查取藏品ID集合)
// */ */
// public boolean addUserDigitalArtworkIds(String uid, String artworkId) { public boolean resetUserDigitalArtworkIdsByMongo(String uid) {
// List<String> ids = this.getUserDigitalArtworkIds(uid); List<String> ids = goblinMongoUtils.getPageUserDigitalArtworkIds(uid, 1, 30);
// if (CollectionUtils.isEmpty(ids)) { return !CollectionUtils.isEmpty(ids) && redisUtil.set(GoblinRedisConst.USER_DIGITAL_ARTWORK_IDS.concat(uid), ids);
// ids = CollectionUtil.arrayListString(); }
// ids.add(artworkId);
// } else { /**
// ids.add(0, artworkId); * 缓存并更新用户藏品ID集合
// int size = ids.size(); */
// if (size > 30) ids.remove(size - 1); public boolean addUserDigitalArtworkIds(String uid, String artworkId) {
// } List<String> ids = this.getUserDigitalArtworkIds(uid);
// return redisUtil.set(GoblinRedisConst.USER_DIGITAL_ARTWORK_IDS.concat(uid), ids); if (CollectionUtils.isEmpty(ids)) {
// } ids = CollectionUtil.arrayListString();
ids.add(artworkId);
} else {
ids.add(0, artworkId);
int size = ids.size();
if (size > 30) ids.remove(size - 1);
}
return redisUtil.set(GoblinRedisConst.USER_DIGITAL_ARTWORK_IDS.concat(uid), ids);
}
/** /**
* 开启盲盒:缓存并更新用户藏品ID集合 * 开启盲盒:缓存并更新用户藏品ID集合
......
...@@ -127,11 +127,13 @@ goblin_store_coupon_rule.update_del=UPDATE goblin_store_coupon_rule SET del_flg= ...@@ -127,11 +127,13 @@ goblin_store_coupon_rule.update_del=UPDATE goblin_store_coupon_rule SET del_flg=
goblin_user_coupon.insert=INSERT INTO goblin_user_coupon (ucoupon_id, store_coupon_id, uid, state, bind_at, dued_at, operator, created_at)VALUES(?,?,?,?,?,?,?,?) goblin_user_coupon.insert=INSERT INTO goblin_user_coupon (ucoupon_id, store_coupon_id, uid, state, bind_at, dued_at, operator, created_at)VALUES(?,?,?,?,?,?,?,?)
goblin_user_coupon.updateState=UPDATE goblin_user_coupon SET state = ? , used_for = ? ,updated_at = ? where ucoupon_id = ? goblin_user_coupon.updateState=UPDATE goblin_user_coupon SET state = ? , used_for = ? ,updated_at = ? where ucoupon_id = ?
#---- \u6211\u7684\u85CF\u54C1 #---- \u6211\u7684\u85CF\u54C1
goblin_user_digital_artwork.insert=INSERT INTO goblin_user_digital_artwork (artwork_id, sku_id, uid, order_id, source, state, created_at)VALUES(?,?,?,?,?,?,?) goblin_user_digital_artwork.insert=INSERT INTO goblin_user_digital_artwork (artwork_id,sku_id,uid,order_id,source,state,created_at)VALUES(?,?,?,?,?,?,?)
goblin_user_digital_artwork.insert_for_transfer=INSERT INTO goblin_user_digital_artwork (artwork_id,uid,sku_id,order_id,edition_sn,nft_id,trading_txhash,trading_at,`source`,state,created_at)VALUES(?,?,?,?,?,?,?,?,?,?,?)
goblin_user_digital_artwork.update_for_chain=UPDATE goblin_user_digital_artwork SET edition_sn=?,nft_id=?,release_txhash=?,release_at=?,trading_txhash=?,trading_at=?,state=?,updated_at=? WHERE artwork_id=? AND state<>1 goblin_user_digital_artwork.update_for_chain=UPDATE goblin_user_digital_artwork SET edition_sn=?,nft_id=?,release_txhash=?,release_at=?,trading_txhash=?,trading_at=?,state=?,updated_at=? WHERE artwork_id=? AND state<>1
goblin_user_digital_artwork.update_for_unboxing=UPDATE goblin_user_digital_artwork SET state=1,del_flg='1',opening_at=?,updated_at=?,deleted_at=? WHERE artwork_id=? AND state<>1 goblin_user_digital_artwork.update_for_unboxing=UPDATE goblin_user_digital_artwork SET state=1,del_flg='1',opening_at=?,updated_at=?,deleted_at=? WHERE artwork_id=? AND state<>1
goblin_user_digital_artwork.update_for_accept=UPDATE goblin_user_digital_artwork SET state=0,opening_at=?,updated_at=? WHERE artwork_id=? AND state=5 goblin_user_digital_artwork.update_for_accept=UPDATE goblin_user_digital_artwork SET state=0,opening_at=?,updated_at=? WHERE artwork_id=? AND state=5
goblin_user_digital_artwork.update_for_transfer=UPDATE goblin_user_digital_artwork SET transfer_order_id=?,transfer_state=?,updated_at=? WHERE artwork_id=? goblin_user_digital_artwork.update_for_transfer=UPDATE goblin_user_digital_artwork SET receiver_uid=?,transfer_order_id=?,transfer_state=?,updated_at=? WHERE artwork_id=?
goblin_user_digital_artwork.update_for_trans_query=UPDATE goblin_user_digital_artwork SET transfer_state=?,del_flg='1',deleted_at=? WHERE artwork_id=?
#---- #----
#---- \u9884\u7EA6 #---- \u9884\u7EA6
goblin_goods_anticipate=INSERT INTO goblin_goods_anticipate(ant_id,people,`type`,`rule`,created_date,del_tag) VALUES(?,?,?,?,?,?) goblin_goods_anticipate=INSERT INTO goblin_goods_anticipate(ant_id,people,`type`,`rule`,created_date,del_tag) VALUES(?,?,?,?,?,?)
......
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