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

Commit 225c8821 authored by anjiabin's avatar anjiabin

Merge branch 'dev_nft_411' of...

Merge branch 'dev_nft_411' of http://gitlab.zhengzai.tv/dongjingwei/liquidnet-bus-v1 into dev_nft_411
parents a547f876 581677f3
......@@ -193,6 +193,12 @@ public class GoblinRedisConst {
*/
public static final String USER_DIGITAL_ARTWORK_CT = PREFIX.concat("u_d_art_ct:");
/**
* 藏品盲盒开启标记
* {goblin:u_d_art_ub:${artworkId}, Number}
*/
public static final String USER_DIGITAL_ARTWORK_UNBOX = PREFIX.concat("u_d_art_ub:");
/**
* 我的藏品生成标记(有时效)
* {goblin:u_d_art:${uid+skuId+orderId},1}
......
......@@ -164,7 +164,9 @@ public class ConsumerGoblinBizArtworkGenRdsReceiver extends AbstractBizRedisRece
bizNftBuyMap.put("message", bizNftBuyNode.toString());
streamOperations.add(StreamRecords.mapBacked(bizNftBuyMap).withStreamKey(MQConst.GalaxyQueue.JSON_NFT_PUBLISH_AND_BUY.getKey()));
if (!fromBoxArtworkFlg) {
redisUtil.incr(GoblinRedisConst.USER_DIGITAL_ARTWORK_CT.concat(uid), 1);
}
// Redis生成标记(缓存三天),用于上面的生成检查
redisUtil.set(genMarkerKey, 1, 259200);
return true;
......
......@@ -5,6 +5,7 @@ import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.constant.GoblinRedisConst;
import com.liquidnet.service.goblin.dto.vo.*;
import com.liquidnet.service.goblin.service.IGoblinUserDigitalArtworkService;
import com.liquidnet.service.goblin.util.GoblinRedisUtils;
......@@ -88,8 +89,11 @@ public class GoblinUserDigitalArtworkController {
unboxDigitalArtworkListVo.setSubtitle(unboxSkuInfoVo.getSubtitle());
unboxDigitalArtworkListVo.setCoverPic(unboxSkuInfoVo.getSkuPic());
return ResponseDto.success(unboxDigitalArtworkListVo);
} else if (goblinRedisUtils.markUnboxUserDigitalArtwork(artworkId) > 1) {
return ResponseDto.failure(ErrorMapping.get("140000"));
}
GoblinUserDigitalArtworkListVo unboxingRstVo = null;
try {
switch (userDigitalArtworkVo.getSource()) {
case 1:
case 2:
......@@ -99,6 +103,10 @@ public class GoblinUserDigitalArtworkController {
default:
log.warn("Invalid operation[UID={},artworkId={}]", currentUid, artworkId);
}
} catch (Exception e) {
log.error("开启盲盒异常[artworkId={},uid={}]", artworkId, currentUid);
}
goblinRedisUtils.del(GoblinRedisConst.USER_DIGITAL_ARTWORK_UNBOX.concat(artworkId));
return null == unboxingRstVo ? ResponseDto.failure(ErrorMapping.get("140102")) : ResponseDto.success(unboxingRstVo);
}
}
......@@ -39,7 +39,7 @@ public class GoblinUserDigitalArtworkServiceImpl implements IGoblinUserDigitalAr
PagedResult<GoblinUserDigitalArtworkListVo> listVoPagedResult = ObjectUtil.getGoblinUserDigitalArtworkListVoPagedResult();
List<String> subArtworkIdList;
if (artworkNum > 30 && pageNum * pageSize > 30) {// 查询Mongo
if ((long) pageNum * pageSize > artworkNum) pageNum = Math.toIntExact(artworkNum / pageSize);
// if ((long) pageNum * pageSize > artworkNum) pageNum = Math.toIntExact(artworkNum / pageSize);
subArtworkIdList = goblinMongoUtils.getPageUserDigitalArtworkIds(uid, pageNum, pageSize);
if (CollectionUtils.isEmpty(subArtworkIdList)) {
log.warn("#我的藏品列表:藏品IDS数据为空[uid={},artworkNum={}]", uid, artworkNum);
......@@ -47,12 +47,15 @@ public class GoblinUserDigitalArtworkServiceImpl implements IGoblinUserDigitalAr
}
} else {
List<String> userDigitalArtworkIds = goblinRedisUtils.getUserDigitalArtworkIds(uid);
if (CollectionUtils.isEmpty(userDigitalArtworkIds)) {
// if (CollectionUtils.isEmpty(userDigitalArtworkIds)) {
if (CollectionUtils.isEmpty(userDigitalArtworkIds) || ((pageNum - 1) * pageSize > (userDigitalArtworkIds.size() - 1))) {
log.warn("#我的藏品列表:藏品IDS缓存为空[uid={},artworkNum={}]", uid, artworkNum);
return pageVo.setArtworkNum((int) artworkNum).setPagedResult(listVoPagedResult).setSystime(LocalDateTime.now());
}
int cacheSize = userDigitalArtworkIds.size(), cacheNum = cacheSize / pageSize;// 分几页
int fromIndex = Math.min(Math.min(cacheNum, pageNum - 1) * pageSize, cacheSize - 1);
// int fromIndex = Math.min(Math.min(cacheNum, pageNum - 1) * pageSize, cacheSize - 1);
int fromIndex = (pageNum - 1) * pageSize;
subArtworkIdList = userDigitalArtworkIds.subList(fromIndex, Math.min(fromIndex + pageSize, cacheSize));
}
......
......@@ -1442,6 +1442,10 @@ public class GoblinRedisUtils {
return (List<String>) redisUtil.get(GoblinRedisConst.USER_DIGITAL_ARTWORK_IDS.concat(uid));
}
public long markUnboxUserDigitalArtwork(String artworkId) {
return redisUtil.incr(GoblinRedisConst.USER_DIGITAL_ARTWORK_UNBOX.concat(artworkId), 1);
}
public long countUserDigitalArtwork(String uid) {
Object o = redisUtil.get(GoblinRedisConst.USER_DIGITAL_ARTWORK_CT.concat(uid));
return Objects.isNull(o) ? 0 : (int) o;
......
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