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

Commit 14ee9c80 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 ea968f06 1dedc97c
......@@ -105,8 +105,8 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
// 判断数量限购 盲盒暂时没限购但是要记录购买数量 所以也放在这里 这样既能都记录限购数量又不至于判断处理麻烦
Integer limitCount = skuVo.getBuyLimit();
// 是否限购都记录一个购买数量 防止中间增加限购 开始没加后面判断库存减了也是有问题的 或者放在最后也行 因为对单用户限流了
if (null != limitCount && !Objects.equals(0, limitCount)) {
int buyCount = goblinRedisUtils.incrSkuCountByUid(uid, skuId, number);
int buyCount = goblinRedisUtils.incrSkuCountByUid(uid, skuId, number);
if (null != limitCount && limitCount > 0) {
if (buyCount > limitCount) {
goblinRedisUtils.decrSkuCountByUid(uid, skuId, number);
return ResponseDto.failure("您已超出限购数量~");
......@@ -127,7 +127,7 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
}*/
String boxSkuId = "";
// 购买盲盒回滚抽到的库存 购买藏品回滚购买的库存
String backSkuId = skuId;
String stockSkuId = skuId;
if (skuVo.getUnbox().equals("1")) {// 盲盒逻辑
GoblinGoodsInfoVo spuInfoVo = goblinRedisUtils.getGoodsInfoVo(spuId);
List<String> skuIdList = spuInfoVo.getSkuIdList();
......@@ -136,16 +136,17 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
} else {
GoblinGoodsSkuInfoVo skuInfoVo = lotteryDraw(skuIdList, number);
if (null == skuInfoVo) {
goblinRedisUtils.decrSkuCountByUid(uid, skuId, number);
return ResponseDto.failure("盲盒库存不足啦~");
}
boxSkuId = skuInfoVo.getSkuId();
backSkuId = boxSkuId;
stockSkuId = boxSkuId;
}
} else {// 普通藏品逻辑
// 判断库存
int surplusGeneral = nftOrderUtils.decrSkuStock(skuId, number);
if (surplusGeneral < 0) {
nftOrderUtils.backSkuCountAndStock(uid, backSkuId, number);
nftOrderUtils.backSkuCountAndStock(uid, stockSkuId, skuId, number);
return ResponseDto.failure("库存不足啦~");
}
}
......@@ -185,14 +186,14 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
// 下单数据
GoblinNftOrder nftOrder = order(payParam, skuVo.getStoreId(), uid, spuId, number, orderId, orderCode, totalPrice, voucherPrice, storeVoucherPrice, boxSkuId);
if (null == nftOrder) {
nftOrderUtils.backSkuCountAndStock(uid, backSkuId, number);
nftOrderUtils.backSkuCountAndStock(uid, stockSkuId, skuId, number);
return ResponseDto.failure("下单失败~");
}
// 下单唤起支付
GoblinNftPayResultVo nftPayResultVo = payOrder(nftOrder, uid, payParam);
if (null == nftPayResultVo) {
nftOrderUtils.backSkuCountAndStock(uid, backSkuId, number);
nftOrderUtils.backSkuCountAndStock(uid, stockSkuId, skuId, number);
return ResponseDto.failure("下单失败啦~");
}
return ResponseDto.success(nftPayResultVo);
......
......@@ -60,11 +60,11 @@ public class GoblinNftOrderUtils {
}
// 回滚用户sku购买个数和库存
public void backSkuCountAndStock(String uid, String skuId, int number) {
public void backSkuCountAndStock(String uid, String stockSkuId, String bySkuId, int number) {
// 减少用户购买个数
goblinRedisUtils.decrSkuCountByUid(uid, skuId, number);
goblinRedisUtils.decrSkuCountByUid(uid, bySkuId, number);
// 增加库存
incrSkuStock(skuId, number);
incrSkuStock(stockSkuId, number);
}
// 订单详情vo
......
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