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

Commit e236687f authored by 张国柄's avatar 张国柄

~api:转赠退还实现;

parent 930ebb60
......@@ -27,16 +27,16 @@ public interface IGoblinUserDigitalArtworkService {
/**
* 藏品受赠确认领取
*
* @param userDigitalArtworkVo GoblinUserDigitalArtworkVo
* @param artworkId 藏品ID
* @return boolean, true-成功
*/
boolean transferConfirmReceive(GoblinUserDigitalArtworkVo userDigitalArtworkVo);
boolean transferConfirmReceive(String artworkId);
/**
* 藏品受赠确认退还
*
* @param userDigitalArtworkVo GoblinUserDigitalArtworkVo
* @param artworkId 藏品ID
* @return boolean, true-成功
*/
boolean transferConfirmReturn(GoblinUserDigitalArtworkVo userDigitalArtworkVo);
boolean transferConfirmReturn(String artworkId);
}
......@@ -202,10 +202,10 @@ public class GoblinUserDigitalArtworkController {
return ResponseDto.failure(ErrorMapping.get("140117"));// 已过转赠领取有效期
}
if (!GoblinStatusConst.TransferState.WAITING.name().equals(userDigitalArtworkVo.getTransferState())) {
return ResponseDto.failure(ErrorMapping.get("140118"));// 藏品已领取
return ResponseDto.failure(ErrorMapping.get(null == userDigitalArtworkVo.getTransferState() ? "140119" : "140118"));// 藏品已领取或已退还
}
if (!goblinRedisUtils.lockUserDigitalArtworkVoOperate(artworkId)) return ResponseDto.failure(ErrorMapping.get("140000"));
boolean transferReceiveRstFlg = goblinUserDigitalArtworkService.transferConfirmReceive(userDigitalArtworkVo);
boolean transferReceiveRstFlg = goblinUserDigitalArtworkService.transferConfirmReceive(artworkId);
goblinRedisUtils.unlockUserDigitalArtworkVoOperate(artworkId);
return transferReceiveRstFlg ? ResponseDto.success() : ResponseDto.failure(ErrorMapping.get("140002"));
}
......@@ -222,12 +222,11 @@ public class GoblinUserDigitalArtworkController {
if (null == userDigitalArtworkVo || userDigitalArtworkVo.getDelFlg().equals("1") || !currentUid.equals(userDigitalArtworkVo.getReceiverUid())) {
return ResponseDto.failure(ErrorMapping.get("140105"));// 藏品不存在
}
String transferState = userDigitalArtworkVo.getTransferState();
if (!GoblinStatusConst.TransferState.WAITING.name().equals(transferState)) {
return ResponseDto.failure(ErrorMapping.get(null == transferState ? "140119" : "140118"));// 藏品已领取
if (!GoblinStatusConst.TransferState.WAITING.name().equals(userDigitalArtworkVo.getTransferState())) {
return ResponseDto.failure(ErrorMapping.get(null == userDigitalArtworkVo.getTransferState() ? "140119" : "140118"));// 藏品已领取
}
if (!goblinRedisUtils.lockUserDigitalArtworkVoOperate(artworkId)) return ResponseDto.failure(ErrorMapping.get("140000"));
boolean transferReceiveRstFlg = goblinUserDigitalArtworkService.transferConfirmReturn(userDigitalArtworkVo);
boolean transferReceiveRstFlg = goblinUserDigitalArtworkService.transferConfirmReturn(artworkId);
goblinRedisUtils.unlockUserDigitalArtworkVoOperate(artworkId);
return transferReceiveRstFlg ? ResponseDto.success() : ResponseDto.failure(ErrorMapping.get("140002"));
}
......
......@@ -2,10 +2,7 @@ package com.liquidnet.service.goblin.service.impl;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.base.MdbMessage;
import com.liquidnet.service.base.PagedResult;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.*;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.galaxy.dto.param.GalaxyNftPublishAndBuyResultQueryReqDto;
import com.liquidnet.service.galaxy.dto.param.GalaxyNftPublishAndBuyResultQueryRespDto;
......@@ -435,7 +432,11 @@ public class GoblinUserDigitalArtworkServiceImpl implements IGoblinUserDigitalAr
}
@Override
public boolean transferConfirmReceive(GoblinUserDigitalArtworkVo userDigitalArtworkVo) {
public boolean transferConfirmReceive(String artworkId) {
GoblinUserDigitalArtworkVo userDigitalArtworkVo = goblinRedisUtils.getUserDigitalArtworkVo(artworkId);
if (!GoblinStatusConst.TransferState.WAITING.name().equals(userDigitalArtworkVo.getTransferState())) {
return false;// 藏品已领取或已退还
}
LocalDateTime currentDateTime = LocalDateTime.now();
userDigitalArtworkVo.setUpdatedAt(currentDateTime);
userDigitalArtworkVo.setTransferState(GoblinStatusConst.TransferState.PENDING.name());
......@@ -453,13 +454,13 @@ public class GoblinUserDigitalArtworkServiceImpl implements IGoblinUserDigitalAr
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.BIZ_ARTWORK_TRANS_QUERY.getKey(), userDigitalArtworkVo.getArtworkId().concat(",").concat(String.valueOf(currentDateTime)));
// Mongo同步更新
GoblinQueueBizMongoDto goblinQueueBizMongoDto = GoblinQueueBizMongoDto.getNew();
goblinQueueBizMongoDto.setCollect(GoblinUserDigitalArtworkVo.class.getSimpleName());
goblinQueueBizMongoDto.setColumn("artworkId");
goblinQueueBizMongoDto.setBizId(userDigitalArtworkVo.getArtworkId());
goblinQueueBizMongoDto.setPrefix(GoblinRedisConst.USER_DIGITAL_ARTWORK);
goblinQueueBizMongoDto.setOpType(2);
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.BIZ_NFT_MONGO.getKey(), goblinQueueBizMongoDto.toJson());
MdbMessage mdbMessage = MdbMessage.getNew();
mdbMessage.setCollect(GoblinUserDigitalArtworkVo.class.getSimpleName());
mdbMessage.setColumn("artworkId");
mdbMessage.setBizId(userDigitalArtworkVo.getArtworkId());
mdbMessage.setPrefix(GoblinRedisConst.USER_DIGITAL_ARTWORK);
mdbMessage.setOpType(2);
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.BIZ_NFT_MONGO.getKey(), mdbMessage.toJson());
// Mysql持久化
LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
......@@ -478,7 +479,39 @@ public class GoblinUserDigitalArtworkServiceImpl implements IGoblinUserDigitalAr
}
@Override
public boolean transferConfirmReturn(GoblinUserDigitalArtworkVo userDigitalArtworkVo) {
public boolean transferConfirmReturn(String artworkId) {
GoblinUserDigitalArtworkVo userDigitalArtworkVo = goblinRedisUtils.getUserDigitalArtworkVo(artworkId);
if (!GoblinStatusConst.TransferState.WAITING.name().equals(userDigitalArtworkVo.getTransferState())) {
return false;// 藏品已领取或已退还
}
String receiverUid = userDigitalArtworkVo.getReceiverUid(), transferOrderId = userDigitalArtworkVo.getTransferOrderId();
if (goblinRedisUtils.rmvUserDigitalArtworkIdsTransfer(receiverUid, artworkId)) {
LocalDateTime currentDateTime = LocalDateTime.now();
// 转赠人藏品恢复
userDigitalArtworkVo.setTransferOrderId(null);
userDigitalArtworkVo.setTransferState(null);
userDigitalArtworkVo.setReceiverUid(null);
userDigitalArtworkVo.setReceiverUser(null);
userDigitalArtworkVo.setUpdatedAt(currentDateTime);
goblinRedisUtils.setUserDigitalArtworkVo(userDigitalArtworkVo);
// Mongo藏品数据更新
MdbMessage mdbMessage = MdbMessage.getNew();
mdbMessage.setCollect(GoblinUserDigitalArtworkVo.class.getSimpleName());
mdbMessage.setColumn("artworkId");
mdbMessage.setBizId(artworkId);
mdbMessage.setPrefix(GoblinRedisConst.USER_DIGITAL_ARTWORK);
mdbMessage.setOpType(2);
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.BIZ_NFT_MONGO.getKey(), mdbMessage.toJson());
// Mysql转赠订单更新
LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
toMqSqls.add(SqlMapping.get("goblin_nft_transfer_order.up_transfer_confirm"));// 藏品订单记录更新
LinkedList<Object[]> updateNftTransferOrderObjs = CollectionUtil.linkedListObjectArr();
updateNftTransferOrderObjs.add(new Object[]{2, currentDateTime, transferOrderId});
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.SQL_ARTWORK_GEN.getKey(), SqlMapping.gets(toMqSqls, updateNftTransferOrderObjs));
return true;
}
return false;
}
......
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