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

Commit 003654d1 authored by jiangxiulong's avatar jiangxiulong

盲盒分批购listId用的盲盒的不是真正中奖藏品的

parent f538909b
...@@ -82,7 +82,6 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService { ...@@ -82,7 +82,6 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
LocalDateTime nowTime = LocalDateTime.now(); LocalDateTime nowTime = LocalDateTime.now();
HashMap<String, Object> map = goblinRedisUtils.getGoodsSkuInfoVo(nowTime, skuId); HashMap<String, Object> map = goblinRedisUtils.getGoodsSkuInfoVo(nowTime, skuId);
GoblinGoodsSkuInfoVo skuVo = (GoblinGoodsSkuInfoVo) map.get("vo"); GoblinGoodsSkuInfoVo skuVo = (GoblinGoodsSkuInfoVo) map.get("vo");
Object tagType = map.get("tagType");
String listId = (String) map.get("listId"); String listId = (String) map.get("listId");
Integer whiteType = (Integer) map.get("whiteType"); Integer whiteType = (Integer) map.get("whiteType");
...@@ -159,15 +158,16 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService { ...@@ -159,15 +158,16 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
if (CollectionUtil.isEmpty(skuIdList)) { if (CollectionUtil.isEmpty(skuIdList)) {
return ResponseDto.failure("该商品SPU不存在~"); return ResponseDto.failure("该商品SPU不存在~");
} else { } else {
HashMap<String, Object> lotteryDrawMap = lotteryDraw(skuIdList, number, nowTime); // HashMap<String, Object> lotteryDrawMap = lotteryDraw(skuIdList, number, nowTime);
if (null == lotteryDrawMap) { GoblinGoodsSkuInfoVo skuInfoVo = lotteryDraw(skuIdList, number, nowTime, listId);
if (null == skuInfoVo) {
goblinRedisUtils.decrSkuCountByUid(uid, skuId, number); goblinRedisUtils.decrSkuCountByUid(uid, skuId, number);
return ResponseDto.failure("盲盒库存不足啦~"); return ResponseDto.failure("盲盒库存不足啦~");
} }
GoblinGoodsSkuInfoVo skuInfoVo = (GoblinGoodsSkuInfoVo) lotteryDrawMap.get("goodsSkuInfoVo"); // GoblinGoodsSkuInfoVo skuInfoVo = (GoblinGoodsSkuInfoVo) lotteryDrawMap.get("goodsSkuInfoVo");
boxSkuId = skuInfoVo.getSkuId(); boxSkuId = skuInfoVo.getSkuId();
stockSkuId = boxSkuId; stockSkuId = boxSkuId;
listId = (String) lotteryDrawMap.get("listId"); // listId = (String) lotteryDrawMap.get("listId");
} }
} else {// 普通藏品逻辑 } else {// 普通藏品逻辑
// 判断库存 // 判断库存
...@@ -238,14 +238,15 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService { ...@@ -238,14 +238,15 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
} }
} }
private HashMap<String, Object> lotteryDraw(List<String> skuIdList, int number, LocalDateTime nowTime) { private GoblinGoodsSkuInfoVo lotteryDraw(List<String> skuIdList, int number, LocalDateTime nowTime, String listId) {
// private HashMap<String, Object> lotteryDraw(List<String> skuIdList, int number, LocalDateTime nowTime) {
try { try {
ArrayList<GoblinGoodsSkuInfoVo> skuInfoVos = ObjectUtil.cloneArrayGoblinGoodsSkuInfoListVo(); ArrayList<GoblinGoodsSkuInfoVo> skuInfoVos = ObjectUtil.cloneArrayGoblinGoodsSkuInfoListVo();
ArrayList<String> listIds = ObjectUtil.cloneArrayListString(); // ArrayList<String> listIds = ObjectUtil.cloneArrayListString();
for (String kid : skuIdList) { for (String kid : skuIdList) {
HashMap<String, Object> map = goblinRedisUtils.getGoodsSkuInfoVo(nowTime, kid); HashMap<String, Object> map = goblinRedisUtils.getGoodsSkuInfoVo(nowTime, kid);
GoblinGoodsSkuInfoVo skuInfoVo = (GoblinGoodsSkuInfoVo) map.get("vo"); GoblinGoodsSkuInfoVo skuInfoVo = (GoblinGoodsSkuInfoVo) map.get("vo");
String listId = (String) map.get("listId"); // String listId = (String) map.get("listId");
// 是盲盒的扔掉 // 是盲盒的扔掉
if (skuInfoVo.getUnbox().equals("1")) { if (skuInfoVo.getUnbox().equals("1")) {
continue; continue;
...@@ -253,7 +254,7 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService { ...@@ -253,7 +254,7 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
// 不能购买的 没库存的 概率是0的 过滤 // 不能购买的 没库存的 概率是0的 过滤
if (nftOrderUtils.getSkuAllStatusShow(skuInfoVo) && nftOrderUtils.getSkuAllStatusStock(listId, skuInfoVo) > 0) { if (nftOrderUtils.getSkuAllStatusShow(skuInfoVo) && nftOrderUtils.getSkuAllStatusStock(listId, skuInfoVo) > 0) {
skuInfoVos.add(skuInfoVo); skuInfoVos.add(skuInfoVo);
listIds.add(listId); // listIds.add(listId);
} }
} }
if (CollectionUtil.isEmpty(skuInfoVos)) { if (CollectionUtil.isEmpty(skuInfoVos)) {
...@@ -281,7 +282,7 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService { ...@@ -281,7 +282,7 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
// 未设置概率的写入概率 // 未设置概率的写入概率
ArrayList<GoblinGoodsSkuInfoVo> newSkuInfoVos = ObjectUtil.cloneArrayGoblinGoodsSkuInfoListVo(); ArrayList<GoblinGoodsSkuInfoVo> newSkuInfoVos = ObjectUtil.cloneArrayGoblinGoodsSkuInfoListVo();
ArrayList<String> newListIds = ObjectUtil.cloneArrayListString(); // ArrayList<String> newListIds = ObjectUtil.cloneArrayListString();
int skuListSize = skuInfoVos.size(); int skuListSize = skuInfoVos.size();
for (int i = 0; i < skuListSize; i++) { for (int i = 0; i < skuListSize; i++) {
GoblinGoodsSkuInfoVo infoVo = skuInfoVos.get(i); GoblinGoodsSkuInfoVo infoVo = skuInfoVos.get(i);
...@@ -302,7 +303,7 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService { ...@@ -302,7 +303,7 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
infoVo.setHitRatio(skuInfoVos.get(i - 1).getHitRatio().add(infoVo.getHitRatio())); infoVo.setHitRatio(skuInfoVos.get(i - 1).getHitRatio().add(infoVo.getHitRatio()));
} }
newSkuInfoVos.add(infoVo); newSkuInfoVos.add(infoVo);
newListIds.add(listIds.get(i)); // newListIds.add(listIds.get(i));
} }
...@@ -324,17 +325,18 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService { ...@@ -324,17 +325,18 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
int index = hitRatioList.indexOf(nextDoubleNew); int index = hitRatioList.indexOf(nextDoubleNew);
GoblinGoodsSkuInfoVo goodsSkuInfoVo = newSkuInfoVos.get(index); GoblinGoodsSkuInfoVo goodsSkuInfoVo = newSkuInfoVos.get(index);
String endListId = newListIds.get(index); // String endListId = newListIds.get(index);
// 判断库存 // 判断库存
int surplusGeneral = goblinRedisUtils.decrSkuStock(endListId, goodsSkuInfoVo.getSkuId(), number); int surplusGeneral = goblinRedisUtils.decrSkuStock(listId, goodsSkuInfoVo.getSkuId(), number);
if (surplusGeneral < 0) { if (surplusGeneral < 0) {
goblinRedisUtils.incrSkuStock(endListId, goodsSkuInfoVo.getSkuId(), number); goblinRedisUtils.incrSkuStock(listId, goodsSkuInfoVo.getSkuId(), number);
return lotteryDraw(skuIdList, number, nowTime); return lotteryDraw(skuIdList, number, nowTime, listId);
} else { } else {
HashMap<String, Object> map = CollectionUtil.mapStringObject(); // HashMap<String, Object> map = CollectionUtil.mapStringObject();
map.put("goodsSkuInfoVo", goodsSkuInfoVo); // map.put("goodsSkuInfoVo", goodsSkuInfoVo);
map.put("listId", endListId); // map.put("listId", endListId);
return map; // return map;
return goodsSkuInfoVo;
} }
} }
} catch (Exception e) { } catch (Exception e) {
......
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