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

Commit 930ebb60 authored by 张国柄's avatar 张国柄

+api:转赠退还;

parent cdf959df
...@@ -31,4 +31,12 @@ public interface IGoblinUserDigitalArtworkService { ...@@ -31,4 +31,12 @@ public interface IGoblinUserDigitalArtworkService {
* @return boolean, true-成功 * @return boolean, true-成功
*/ */
boolean transferConfirmReceive(GoblinUserDigitalArtworkVo userDigitalArtworkVo); boolean transferConfirmReceive(GoblinUserDigitalArtworkVo userDigitalArtworkVo);
/**
* 藏品受赠确认退还
*
* @param userDigitalArtworkVo GoblinUserDigitalArtworkVo
* @return boolean, true-成功
*/
boolean transferConfirmReturn(GoblinUserDigitalArtworkVo userDigitalArtworkVo);
} }
...@@ -202,11 +202,33 @@ public class GoblinUserDigitalArtworkController { ...@@ -202,11 +202,33 @@ public class GoblinUserDigitalArtworkController {
return ResponseDto.failure(ErrorMapping.get("140117"));// 已过转赠领取有效期 return ResponseDto.failure(ErrorMapping.get("140117"));// 已过转赠领取有效期
} }
if (!GoblinStatusConst.TransferState.WAITING.name().equals(userDigitalArtworkVo.getTransferState())) { if (!GoblinStatusConst.TransferState.WAITING.name().equals(userDigitalArtworkVo.getTransferState())) {
return ResponseDto.failure(ErrorMapping.get("140118"));// 藏品已领取或已过期 return ResponseDto.failure(ErrorMapping.get("140118"));// 藏品已领取
} }
if (!goblinRedisUtils.lockUserDigitalArtworkVoOperate(artworkId)) return ResponseDto.failure(ErrorMapping.get("140000")); if (!goblinRedisUtils.lockUserDigitalArtworkVoOperate(artworkId)) return ResponseDto.failure(ErrorMapping.get("140000"));
boolean transferReceiveRstFlg = goblinUserDigitalArtworkService.transferConfirmReceive(userDigitalArtworkVo); boolean transferReceiveRstFlg = goblinUserDigitalArtworkService.transferConfirmReceive(userDigitalArtworkVo);
goblinRedisUtils.unlockUserDigitalArtworkVoOperate(artworkId); goblinRedisUtils.unlockUserDigitalArtworkVoOperate(artworkId);
return transferReceiveRstFlg ? ResponseDto.success() : ResponseDto.failure(ErrorMapping.get("140002")); return transferReceiveRstFlg ? ResponseDto.success() : ResponseDto.failure(ErrorMapping.get("140002"));
} }
@ApiOperationSupport(order = 6)
@ApiOperation(value = "转赠退还")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "artworkId", value = "藏品ID"),
})
@PostMapping("transfer/return")
public ResponseDto<String> transferReturn(@NotBlank(message = "藏品ID不能为空") @RequestParam String artworkId) {
String currentUid = CurrentUtil.getCurrentUid();
GoblinUserDigitalArtworkVo userDigitalArtworkVo = goblinRedisUtils.getUserDigitalArtworkVo(artworkId);
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 (!goblinRedisUtils.lockUserDigitalArtworkVoOperate(artworkId)) return ResponseDto.failure(ErrorMapping.get("140000"));
boolean transferReceiveRstFlg = goblinUserDigitalArtworkService.transferConfirmReturn(userDigitalArtworkVo);
goblinRedisUtils.unlockUserDigitalArtworkVoOperate(artworkId);
return transferReceiveRstFlg ? ResponseDto.success() : ResponseDto.failure(ErrorMapping.get("140002"));
}
} }
...@@ -477,6 +477,11 @@ public class GoblinUserDigitalArtworkServiceImpl implements IGoblinUserDigitalAr ...@@ -477,6 +477,11 @@ public class GoblinUserDigitalArtworkServiceImpl implements IGoblinUserDigitalAr
return false; return false;
} }
@Override
public boolean transferConfirmReturn(GoblinUserDigitalArtworkVo userDigitalArtworkVo) {
return false;
}
/* -------------------------------------------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------------------------------------------- */
/* -------------------------------------------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------------------------------------------- */
/* -------------------------------------------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------------------------------------------- */
......
...@@ -61,6 +61,7 @@ ...@@ -61,6 +61,7 @@
140116=\u5BC6\u7801\u9519\u8BEF\uFF0C\u518D\u8F93\u9519%d\u6B21\u5C06\u9501\u5B9A%d\u5206\u949F 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 140117=\u8BE5\u85CF\u54C1\u5DF2\u8FC7\u9886\u53D6\u6709\u6548\u671F
140118=\u8BE5\u85CF\u54C1\u5DF2\u9886\u53D6 140118=\u8BE5\u85CF\u54C1\u5DF2\u9886\u53D6
140119=\u8BE5\u85CF\u54C1\u5DF2\u9000\u8FD8
......
...@@ -46,25 +46,30 @@ public class PlatformGoblinNftTransferOrderService extends ServiceImpl<GoblinNft ...@@ -46,25 +46,30 @@ public class PlatformGoblinNftTransferOrderService extends ServiceImpl<GoblinNft
GoblinNftTransferOrder nftTransferOrder = list.get(i); GoblinNftTransferOrder nftTransferOrder = list.get(i);
String artworkId = nftTransferOrder.getArtworkId(); String artworkId = nftTransferOrder.getArtworkId();
GoblinUserDigitalArtworkVo rdsVo = (GoblinUserDigitalArtworkVo) redisGoblinUtil.get(GoblinRedisConst.USER_DIGITAL_ARTWORK.concat(artworkId)); if (this.lockUserDigitalArtworkVoOperate(artworkId)) {
if (null != rdsVo && GoblinStatusConst.TransferState.WAITING.name().equals(rdsVo.getTransferState())) { GoblinUserDigitalArtworkVo rdsVo = (GoblinUserDigitalArtworkVo) redisGoblinUtil.get(GoblinRedisConst.USER_DIGITAL_ARTWORK.concat(artworkId));
// 受赠人受赠藏品列表缓存更新 if (null != rdsVo && GoblinStatusConst.TransferState.WAITING.name().equals(rdsVo.getTransferState())) {
this.rmvUserDigitalArtworkIdsTransfer(rdsVo.getReceiverUid(), artworkId); // 受赠人受赠藏品列表缓存更新
// 转赠人藏品恢复 this.rmvUserDigitalArtworkIdsTransfer(rdsVo.getReceiverUid(), artworkId);
rdsVo.setTransferOrderId(null); // 转赠人藏品恢复
rdsVo.setTransferState(null); rdsVo.setTransferOrderId(null);
rdsVo.setReceiverUid(null); rdsVo.setTransferState(null);
rdsVo.setReceiverUser(null);// rdsVo.setReceiverUid(null);
rdsVo.setUpdatedAt(currentDateTime); rdsVo.setReceiverUser(null);//
redisGoblinUtil.set(GoblinRedisConst.USER_DIGITAL_ARTWORK.concat(artworkId), rdsVo); rdsVo.setUpdatedAt(currentDateTime);
redisGoblinUtil.set(GoblinRedisConst.USER_DIGITAL_ARTWORK.concat(artworkId), rdsVo);
nftTransferOrder.setState(3);
nftTransferOrder.setUpdatedAt(currentDateTime); nftTransferOrder.setState(3);
updateNftTransferOrderList.add(nftTransferOrder); nftTransferOrder.setUpdatedAt(currentDateTime);
updateUserDigitalArtworkIdList.add(artworkId); updateNftTransferOrderList.add(nftTransferOrder);
updateUserDigitalArtworkIdList.add(artworkId);
numSucc++;
numSucc++;
}
this.unlockUserDigitalArtworkVoOperate(artworkId);
} }
} }
if (numSucc > 0) {// 更新Mysql、Mongo if (numSucc > 0) {// 更新Mysql、Mongo
this.updateBatchById(updateNftTransferOrderList, updateNftTransferOrderList.size()); this.updateBatchById(updateNftTransferOrderList, updateNftTransferOrderList.size());
...@@ -93,6 +98,26 @@ public class PlatformGoblinNftTransferOrderService extends ServiceImpl<GoblinNft ...@@ -93,6 +98,26 @@ public class PlatformGoblinNftTransferOrderService extends ServiceImpl<GoblinNft
/* ------------------------------------------------------------------------------------ */ /* ------------------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------------------ */ /* ------------------------------------------------------------------------------------ */
/**
* 锁定藏品操作
*/
private boolean lockUserDigitalArtworkVoOperate(String artworkId) {
String lk = GoblinRedisConst.USER_DIGITAL_ARTWORK.concat("lk").concat(artworkId);
AbstractRedisUtil redisUtil = redisDataSourceUtil.getRedisGoblinUtil();
if (redisUtil.incr(lk, 1) > 1) {
return false;
}
redisUtil.expireSet(lk, 30);
return true;
}
/**
* 解锁藏品操作
*/
private void unlockUserDigitalArtworkVoOperate(String artworkId) {
redisDataSourceUtil.getRedisGoblinUtil().del(GoblinRedisConst.USER_DIGITAL_ARTWORK.concat("lk").concat(artworkId));
}
/** /**
* 获取用户受赠藏品ID集合 * 获取用户受赠藏品ID集合
*/ */
......
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