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

Commit 73369bc4 authored by 胡佳晨's avatar 胡佳晨

盲盒下单 判断逻辑完成

parent d246f201
...@@ -266,7 +266,7 @@ public class GoblinMixServiceImpl implements IGoblinMixService { ...@@ -266,7 +266,7 @@ public class GoblinMixServiceImpl implements IGoblinMixService {
if (isHit && hitRatioCount.doubleValue() < 100.00 && map.size() > 0) { if (isHit && hitRatioCount.doubleValue() < 100.00 && map.size() > 0) {
nftBoxUtils.arrangeHitRatioMap(map, hitRatioCount); nftBoxUtils.arrangeHitRatioMap(map, hitRatioCount);
} }
Map<String, Integer> skuMap = nftBoxUtils.getSkuHitRatio(stock, map); Map<String, Integer> skuMap = nftBoxUtils.getSkuHitRatio(stock * item.getCount(), map);
for (String key : skuMap.keySet()) { for (String key : skuMap.keySet()) {
Integer stockNum = skuMap.get(key); Integer stockNum = skuMap.get(key);
//库存 //库存
...@@ -283,12 +283,12 @@ public class GoblinMixServiceImpl implements IGoblinMixService { ...@@ -283,12 +283,12 @@ public class GoblinMixServiceImpl implements IGoblinMixService {
} }
} else { } else {
//库存 //库存
int skuStock = redisUtils.decrSkuStock(null, skuId, stock); int skuStock = redisUtils.decrSkuStock(null, skuId, stock * item.getCount());
if (skuStock < 0) { if (skuStock < 0) {
redisUtils.incrSkuStock(null, skuId, stock); redisUtils.incrSkuStock(null, skuId, stock * item.getCount());
errorNameList.add(item.getSkuName()); errorNameList.add(item.getSkuName());
} else { } else {
redisUtils.setSkuStock(mixId, skuId, stock); redisUtils.setSkuStock(mixId, skuId, stock * item.getCount());
sucSkuId.add(skuId); sucSkuId.add(skuId);
} }
}//普通商品 }//普通商品
......
...@@ -1756,7 +1756,7 @@ public class GoblinMongoUtils { ...@@ -1756,7 +1756,7 @@ public class GoblinMongoUtils {
public HashMap<String, Object> getGoblinMixListVo(String name, String uid, Integer pageNum) { public HashMap<String, Object> getGoblinMixListVo(String name, String uid, Integer pageNum) {
int pageSize = 20; int pageSize = 20;
Criteria criteria = Criteria.where("uid").is(uid); Criteria criteria = Criteria.where("userId").is(uid);
if (name != null && !name.equals("")) { if (name != null && !name.equals("")) {
criteria = criteria.and("name").regex("^.*" + name + ".*$"); criteria = criteria.and("name").regex("^.*" + name + ".*$");
} }
......
package com.liquidnet.service.order.service.impl; package com.liquidnet.service.order.service.impl;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.CurrentUtil; import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.goblin.constant.NftAccStatusEnum; import com.liquidnet.service.goblin.constant.NftAccStatusEnum;
import com.liquidnet.service.goblin.dto.GoblinUserNftAccInfoVo; import com.liquidnet.service.goblin.dto.GoblinUserNftAccInfoVo;
import com.liquidnet.service.goblin.dto.manage.MixOrderParam; import com.liquidnet.service.goblin.dto.manage.MixOrderParam;
import com.liquidnet.service.goblin.dto.vo.GoblinGoodsSkuInfoVo; import com.liquidnet.service.goblin.dto.vo.*;
import com.liquidnet.service.goblin.dto.vo.GoblinMixDetailsItemVo;
import com.liquidnet.service.goblin.dto.vo.GoblinMixDetailsVo;
import com.liquidnet.service.goblin.dto.vo.GoblinPayInnerResultVo;
import com.liquidnet.service.goblin.param.SyncOrderParam; import com.liquidnet.service.goblin.param.SyncOrderParam;
import com.liquidnet.service.goblin.service.IMixOrderService; import com.liquidnet.service.goblin.service.IMixOrderService;
import com.liquidnet.service.order.utils.*; import com.liquidnet.service.order.utils.*;
...@@ -49,6 +47,9 @@ public class MixOrderServiceImpl implements IMixOrderService { ...@@ -49,6 +47,9 @@ public class MixOrderServiceImpl implements IMixOrderService {
GoblinMixDetailsVo mixVo = redisUtils.getMixDetails(param.getMixId()); GoblinMixDetailsVo mixVo = redisUtils.getMixDetails(param.getMixId());
String mixId = mixVo.getMixId(); String mixId = mixVo.getMixId();
String mobile = StringUtils.defaultString(((String) CurrentUtil.getTokenClaims().get(CurrentUtil.TOKEN_MOBILE)), ""); String mobile = StringUtils.defaultString(((String) CurrentUtil.getTokenClaims().get(CurrentUtil.TOKEN_MOBILE)), "");
List<String> canBuyIds = CollectionUtil.linkedListString();//有库存的id
String boxSkuId = "";//盲盒种的skuid
String stockSkuId = ""; // 盲盒id
//判断 活动状态 //判断 活动状态
LocalDateTime st = LocalDateTime.parse(mixVo.getTimeStart(), DTF_YMD_HMS); LocalDateTime st = LocalDateTime.parse(mixVo.getTimeStart(), DTF_YMD_HMS);
LocalDateTime et = LocalDateTime.parse(mixVo.getTimeEnd(), DTF_YMD_HMS); LocalDateTime et = LocalDateTime.parse(mixVo.getTimeEnd(), DTF_YMD_HMS);
...@@ -72,7 +73,42 @@ public class MixOrderServiceImpl implements IMixOrderService { ...@@ -72,7 +73,42 @@ public class MixOrderServiceImpl implements IMixOrderService {
List<GoblinGoodsSkuInfoVo> skuInfoList = ObjectUtil.cloneArrayGoblinGoodsSkuInfoListVo(); List<GoblinGoodsSkuInfoVo> skuInfoList = ObjectUtil.cloneArrayGoblinGoodsSkuInfoListVo();
List<GoblinGoodsSkuInfoVo> nftInfoList = ObjectUtil.cloneArrayGoblinGoodsSkuInfoListVo(); List<GoblinGoodsSkuInfoVo> nftInfoList = ObjectUtil.cloneArrayGoblinGoodsSkuInfoListVo();
for (GoblinMixDetailsItemVo itemVo : mixVo.getItem()) { for (GoblinMixDetailsItemVo itemVo : mixVo.getItem()) {
GoblinGoodsSkuInfoVo skuInfoVo = redisUtils.getGoodsSkuInfoVo(itemVo.getSkuId()); String skuId = itemVo.getSkuId();
GoblinGoodsSkuInfoVo skuInfoVo = redisUtils.getGoodsSkuInfoVo(skuId);
//库存处理
if (skuInfoVo.getUnbox().equals("1")) {//盲盒
GoblinGoodsInfoVo spuInfoVo = redisUtils.getGoodsInfoVo(skuInfoVo.getSpuId());
List<String> skuIdList = spuInfoVo.getSkuIdList();
if (CollectionUtil.isEmpty(skuIdList)) {
return ResponseDto.failure("该商品SPU不存在~");
} else {
GoblinGoodsSkuInfoVo boxSkuInfo = nftOrderUtils.lotteryDraw(skuIdList, itemVo.getCount(), nt, null);
if (null == boxSkuInfo) {
return ResponseDto.failure("盲盒库存不足啦~");
} else {
canBuyIds.add(boxSkuInfo.getSkuId() + "," + itemVo.getCount());
}
boxSkuId = skuInfoVo.getSkuId();
stockSkuId = boxSkuId;
}
} else {//正常
if (skuInfoVo.getSkuType() == 1) {
stockSkuId = skuId;
}
int stock = redisUtils.decrSkuStock(mixId, skuId, itemVo.getCount());
if (stock < 0) {
redisUtils.incrSkuStock(mixId, skuId, itemVo.getCount());
for (String canBuyId : canBuyIds) {
String[] data = canBuyId.split(",");
String skuIdSingle = data[0];
int count = Integer.parseInt(data[1]);
redisUtils.incrSkuStock(mixId, skuIdSingle, count);
}
return ResponseDto.failure("库存不足");
} else {
canBuyIds.add(skuId + "," + itemVo.getCount());
}
}
if (skuInfoVo.getSkuType() == 0) { if (skuInfoVo.getSkuType() == 0) {
skuInfoList.add(skuInfoVo); skuInfoList.add(skuInfoVo);
} else if (skuInfoVo.getSkuType() == 1) { } else if (skuInfoVo.getSkuType() == 1) {
...@@ -85,11 +121,10 @@ public class MixOrderServiceImpl implements IMixOrderService { ...@@ -85,11 +121,10 @@ public class MixOrderServiceImpl implements IMixOrderService {
if (nftInfoList.size() > 0) { if (nftInfoList.size() > 0) {
GoblinUserNftAccInfoVo openAccountInfo = redisUtils.getOpenAccountInfo(uid); GoblinUserNftAccInfoVo openAccountInfo = redisUtils.getOpenAccountInfo(uid);
if (null == openAccountInfo || !NftAccStatusEnum.StatusAcc.SUCCESS.getCode().equals(openAccountInfo.getCode())) { if (null == openAccountInfo || !NftAccStatusEnum.StatusAcc.SUCCESS.getCode().equals(openAccountInfo.getCode())) {
return ResponseDto.failure("您还未开通数字账户"); return ResponseDto.failure("您还未开通数字账户");
} }
} }
//库存处理
return null; return null;
} }
......
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