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

Commit 15f27936 authored by 张国柄's avatar 张国柄

~api:完善转赠领取功能;

parent 114b524b
......@@ -11,7 +11,7 @@ public interface IGoblinUserDigitalArtworkService {
/**
* 获取受赠藏品列表
*
* @param uid UID
* @param uid UID String
* @return List<GoblinUserDigitalArtworkTransferListVo>
*/
List<GoblinUserDigitalArtworkTransferListVo> getArtworkListFromTransfer(String uid);
......@@ -24,5 +24,11 @@ public interface IGoblinUserDigitalArtworkService {
boolean transfer(GoblinUserDigitalArtworkVo userDigitalArtworkVo, String routerType, String[] receiverArr);
boolean transferReceive(GoblinUserDigitalArtworkVo userDigitalArtworkVo);
/**
* 藏品受赠确认领取
*
* @param userDigitalArtworkVo GoblinUserDigitalArtworkVo
* @return boolean, true-成功
*/
boolean transferConfirmReceive(GoblinUserDigitalArtworkVo userDigitalArtworkVo);
}
......@@ -1182,7 +1182,7 @@ create table goblin_nft_transfer_order
artwork_id varchar(64) not null comment '藏品ID',
owner_uid varchar(64) not null comment '拥有人UID',
receiver_uid varchar(64) not null comment '受赠人UID',
state tinyint default 1 comment '订单状态[0-等待接收,1-确认接收,2-拒绝接收]',
state tinyint default 0 comment '订单状态[0-等待接收,1-确认接收,2-拒绝接收]',
created_at datetime not null,
updated_at datetime null,
comment varchar(500)
......
......@@ -195,14 +195,17 @@ public class GoblinUserDigitalArtworkController {
public ResponseDto<String> transferReceive(@NotBlank(message = "藏品ID不能为空") @RequestParam String artworkId) {
String currentUid = CurrentUtil.getCurrentUid();
GoblinUserDigitalArtworkVo userDigitalArtworkVo = goblinRedisUtils.getUserDigitalArtworkVo(artworkId);
if (null == userDigitalArtworkVo || !currentUid.equals(userDigitalArtworkVo.getReceiverUid()) || userDigitalArtworkVo.getDelFlg().equals("1")) {
return ResponseDto.failure(ErrorMapping.get("140105"));
if (null == userDigitalArtworkVo || userDigitalArtworkVo.getDelFlg().equals("1") || !currentUid.equals(userDigitalArtworkVo.getReceiverUid())) {
return ResponseDto.failure(ErrorMapping.get("140105"));// 藏品不存在
}
if (userDigitalArtworkVo.getTransferAt().plusDays(1).isBefore(LocalDateTime.now())) {
return ResponseDto.failure(ErrorMapping.get("140117"));// 已过转赠领取有效期
}
if (LocalDateTime.now().isAfter(userDigitalArtworkVo.getTransferAt().plusDays(1))) {
return ResponseDto.failure(ErrorMapping.get("140117"));
if (!userDigitalArtworkVo.getTransferState().equals(GoblinStatusConst.TransferState.WAITING.name())) {
return ResponseDto.failure(ErrorMapping.get("140118"));// 藏品已领取
}
if (!goblinRedisUtils.lockUserDigitalArtworkVoOperate(artworkId)) return ResponseDto.failure(ErrorMapping.get("140000"));
boolean transferReceiveRstFlg = goblinUserDigitalArtworkService.transferReceive(userDigitalArtworkVo);
boolean transferReceiveRstFlg = goblinUserDigitalArtworkService.transferConfirmReceive(userDigitalArtworkVo);
goblinRedisUtils.unlockUserDigitalArtworkVoOperate(artworkId);
return transferReceiveRstFlg ? ResponseDto.success() : ResponseDto.failure(ErrorMapping.get("140002"));
}
......
......@@ -397,7 +397,7 @@ public class GoblinUserDigitalArtworkServiceImpl implements IGoblinUserDigitalAr
userDigitalArtworkVo.setTransferState(GoblinStatusConst.TransferState.WAITING.name());
userDigitalArtworkVo.setReceiverUser(SensitizeUtil.custom(receiverArr[1], 0, 1) + String.format(" (%s)", SensitizeUtil.custom(receiverArr[2], 3, 4)));
if (goblinRedisUtils.setUserDigitalArtworkVo(userDigitalArtworkVo)) {
// 受赠人受赠藏品处理
// 受赠人受赠藏品列表缓存更新
goblinRedisUtils.addUserDigitalArtworkIdsTransfer(userDigitalArtworkVo.getReceiverUid(), userDigitalArtworkVo.getArtworkId());
// Mongo同步更新
......@@ -411,7 +411,7 @@ public class GoblinUserDigitalArtworkServiceImpl implements IGoblinUserDigitalAr
// Mysql持久化
LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
toMqSqls.add(SqlMapping.get("goblin_user_digital_artwork.update_for_transfer"));
toMqSqls.add(SqlMapping.get("goblin_user_digital_artwork.up_transfer"));
LinkedList<Object[]> updateUserDigitalArtworkObjs = CollectionUtil.linkedListObjectArr();
updateUserDigitalArtworkObjs.add(new Object[]{userDigitalArtworkVo.getReceiverUid(),
userDigitalArtworkVo.getTransferOrderId(), userDigitalArtworkVo.getTransferState(), userDigitalArtworkVo.getUpdatedAt(), userDigitalArtworkVo.getArtworkId()
......@@ -428,22 +428,45 @@ public class GoblinUserDigitalArtworkServiceImpl implements IGoblinUserDigitalAr
}
@Override
public boolean transferReceive(GoblinUserDigitalArtworkVo userDigitalArtworkVo) {
// TODO: 2022/8/25 zhanggb.藏品转赠领取实现
// GoblinGoodsSkuInfoVo goodsSkuInfoVo = goblinRedisUtils.getGoodsSkuInfoVo(userDigitalArtworkVo.getSkuId());
// LocalDateTime currentDateTime = LocalDateTime.now();
//
// GalaxyNftTransferReqDto galaxyNftTransferReqDto = GalaxyNftTransferReqDto.getNew();
// galaxyNftTransferReqDto.setRouterType(goodsSkuInfoVo.getRouteType());
// galaxyNftTransferReqDto.setNftId(userDigitalArtworkVo.getNftId());
// galaxyNftTransferReqDto.setUserId(userDigitalArtworkVo.getUid());
// galaxyNftTransferReqDto.setReceiveUserId(userDigitalArtworkVo.getReceiverUid());
// galaxyNftTransferReqDto.setTransOrderId(userDigitalArtworkVo.getTransferOrderId());
// galaxyNftTransferReqDto.setReqTimestamp(DateUtil.Formatter.yyyyMMddHHmmss.format(currentDateTime));
// queueUtils.sendMsgByRedis(MQConst.GalaxyQueue.JSON_NFT_TRANSFER.getKey(), JsonUtils.toJson(galaxyNftTransferReqDto));
// queueUtils.sendMsgByRedis(MQConst.GoblinQueue.BIZ_ARTWORK_TRANS_QUERY.getKey(), userDigitalArtworkVo.getArtworkId().concat(",").concat(String.valueOf(currentDateTime)));
public boolean transferConfirmReceive(GoblinUserDigitalArtworkVo userDigitalArtworkVo) {
LocalDateTime currentDateTime = LocalDateTime.now();
userDigitalArtworkVo.setUpdatedAt(currentDateTime);
userDigitalArtworkVo.setTransferState(GoblinStatusConst.TransferState.PENDING.name());
if (goblinRedisUtils.setUserDigitalArtworkVo(userDigitalArtworkVo)) {
GoblinGoodsSkuInfoVo goodsSkuInfoVo = goblinRedisUtils.getGoodsSkuInfoVo(userDigitalArtworkVo.getSkuId());
GalaxyNftTransferReqDto galaxyNftTransferReqDto = GalaxyNftTransferReqDto.getNew();
galaxyNftTransferReqDto.setRouterType(goodsSkuInfoVo.getRouteType());
galaxyNftTransferReqDto.setNftId(userDigitalArtworkVo.getNftId());
galaxyNftTransferReqDto.setUserId(userDigitalArtworkVo.getUid());
galaxyNftTransferReqDto.setReceiveUserId(userDigitalArtworkVo.getReceiverUid());
galaxyNftTransferReqDto.setTransOrderId(userDigitalArtworkVo.getTransferOrderId());
galaxyNftTransferReqDto.setReqTimestamp(DateUtil.Formatter.yyyyMMddHHmmss.format(currentDateTime));
queueUtils.sendMsgByRedis(MQConst.GalaxyQueue.JSON_NFT_TRANSFER.getKey(), JsonUtils.toJson(galaxyNftTransferReqDto));
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());
// Mysql持久化
LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
toMqSqls.add(SqlMapping.get("goblin_user_digital_artwork.up_transfer_confirm"));
LinkedList<Object[]> updateUserDigitalArtworkObjs = CollectionUtil.linkedListObjectArr();
updateUserDigitalArtworkObjs.add(new Object[]{
userDigitalArtworkVo.getTransferState(), userDigitalArtworkVo.getUpdatedAt(), userDigitalArtworkVo.getArtworkId()
});
toMqSqls.add(SqlMapping.get("goblin_nft_transfer_order.up_transfer_confirm"));// 藏品订单记录更新
LinkedList<Object[]> initNftTransferOrderObjs = CollectionUtil.linkedListObjectArr();
initNftTransferOrderObjs.add(new Object[]{1, currentDateTime, userDigitalArtworkVo.getTransferOrderId()});
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.SQL_ARTWORK_GEN.getKey(), SqlMapping.gets(toMqSqls, updateUserDigitalArtworkObjs));
return true;
}
return false;
}
......
......@@ -114,10 +114,10 @@ public class GoblinQueBizArtworkTransQueryService {
{// Mysql持久化
LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
toMqSqls.add(SqlMapping.get("goblin_user_digital_artwork.update_for_trans_query"));
toMqSqls.add(SqlMapping.get("goblin_user_digital_artwork.up_transfer_chain"));
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"));
toMqSqls.add(SqlMapping.get("goblin_user_digital_artwork.in_transfer"));
LinkedList<Object[]> initUserDigitalArtworkObjs = CollectionUtil.linkedListObjectArr();
initUserDigitalArtworkObjs.add(new Object[]{receiverDigitalArtworkVo.getArtworkId(),
receiverDigitalArtworkVo.getUid(), receiverDigitalArtworkVo.getSkuId(), receiverDigitalArtworkVo.getOrderId(),
......
......@@ -2144,6 +2144,16 @@ public class GoblinRedisUtils {
return redisUtil.set(GoblinRedisConst.USER_DIGITAL_ARTWORK_IDS_TRANSFER, ids);
}
public boolean rmvUserDigitalArtworkIdsTransfer(String uid, String artworkId) {
List<String> ids = this.getUserDigitalArtworkIdsTransfer(uid);
if (CollectionUtils.isEmpty(ids)) {
return false;
} else {
ids.remove(artworkId);
return redisUtil.set(GoblinRedisConst.USER_DIGITAL_ARTWORK_IDS_TRANSFER, ids);
}
}
public boolean setUserDigitalArtworkIdsTransfer(String uid, List<String> artworkIdList) {
return redisUtil.set(GoblinRedisConst.USER_DIGITAL_ARTWORK_IDS_TRANSFER, artworkIdList);
}
......
......@@ -60,6 +60,7 @@
140115=\u5BC6\u7801\u9519\u8BEF\u5DF2\u8FBE\u4E0A\u9650\uFF0C\u8BF7\u8054\u7CFB\u5BA2\u670D\u91CD\u7F6E\u5BC6\u7801
140116=\u5BC6\u7801\u9519\u8BEF\uFF0C\u518D\u8F93\u9519%d\u6B21\u5C06\u9501\u5B9A%d\u5206\u949F
140117=\u8BE5\u85CF\u54C1\u5DF2\u8FC7\u9886\u53D6\u6709\u6548\u671F
140118=\u8BE5\u85CF\u54C1\u5DF2\u9886\u53D6
......
......@@ -128,14 +128,16 @@ goblin_user_coupon.insert=INSERT INTO goblin_user_coupon (ucoupon_id, store_coup
goblin_user_coupon.updateState=UPDATE goblin_user_coupon SET state = ? , used_for = ? ,updated_at = ? where ucoupon_id = ?
#---- \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_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.in_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_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_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=?
goblin_user_digital_artwork.up_transfer=UPDATE goblin_user_digital_artwork SET receiver_uid=?,transfer_order_id=?,transfer_state=?,updated_at=? WHERE artwork_id=?
goblin_user_digital_artwork.up_transfer_confirm=UPDATE goblin_user_digital_artwork SET transfer_state=?,updated_at=? WHERE artwork_id=?
goblin_user_digital_artwork.up_transfer_chain=UPDATE goblin_user_digital_artwork SET transfer_state=?,del_flg='1',deleted_at=? WHERE artwork_id=?
#---- \u85CF\u54C1\u8F6C\u8D60\u8BA2\u5355
goblin_nft_transfer_order.insert=INSERT INTO goblin_nft_transfer_order (order_id,artwork_id,owner_uid,receiver_uid,state,created_at)VALUES(?,?,?,?,0,?)
goblin_nft_transfer_order.up_transfer_confirm=UPDATE goblin_nft_transfer_order SET state=?,updated_at=? WHERE order_id=?
#---- \u9884\u7EA6
goblin_goods_anticipate=INSERT INTO goblin_goods_anticipate(ant_id,people,`type`,`rule`,created_date,del_tag) VALUES(?,?,?,?,?,?)
goblin_goods_anticipate_value=INSERT INTO goblin_goods_anticipate_value (uid,ant_id,sku_name,sku_id,spu_id,about_people,actual_people,rule,about_start_date,about_end_date,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