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

Commit b3e40357 authored by jiangxiulong's avatar jiangxiulong

藏品下单、抽奖各种状态判断的整理

parent cc18c8f8
...@@ -73,23 +73,15 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService { ...@@ -73,23 +73,15 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
String skuId = payParam.getSkuId(); String skuId = payParam.getSkuId();
int number = 1; int number = 1;
GoblinGoodsSkuInfoVo skuVo = goblinRedisUtils.getGoodsSkuInfoVo(skuId); GoblinGoodsSkuInfoVo skuVo = goblinRedisUtils.getGoodsSkuInfoVo(skuId);
if (null == skuVo || (null != skuVo.getSkuAppear() && skuVo.getSkuAppear().equals("1"))) { if (!nftOrderUtils.getSkuAllStatusShow(skuVo)) {
return ResponseDto.failure("该商品不存在~"); return ResponseDto.failure("该商品不存在~");
} }
String spuId = skuVo.getSpuId();
// 判断是否藏品 // 单独设置的是否可购买
if (!Objects.equals(1, skuVo.getSkuType())) { if (null != skuVo.getSkuCanbuy() && skuVo.getSkuCanbuy().equals("0")) {
return ResponseDto.failure("该商品不属于藏品~");
}
// 3审核通过 3已上架 0未删除 才可购买
if (
!skuVo.getStatus().equals("3") || !skuVo.getShelvesStatus().equals("3") ||
skuVo.getDelFlg().equals("1") || (null != skuVo.getSkuCanbuy() && skuVo.getSkuCanbuy().equals("0"))
) {
return ResponseDto.failure("该商品当前状态不可购买~"); return ResponseDto.failure("该商品当前状态不可购买~");
} }
// 主动设置的售罄 // 单独设置的售罄
if (null != skuVo.getSoldoutStatus() && skuVo.getSoldoutStatus().equals(1)) { if (null != skuVo.getSoldoutStatus() && skuVo.getSoldoutStatus().equals(1)) {
return ResponseDto.failure("该商品已售罄~"); return ResponseDto.failure("该商品已售罄~");
} }
...@@ -128,6 +120,7 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService { ...@@ -128,6 +120,7 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
String boxSkuId = ""; String boxSkuId = "";
// 购买盲盒回滚抽到的库存 购买藏品回滚购买的库存 // 购买盲盒回滚抽到的库存 购买藏品回滚购买的库存
String stockSkuId = skuId; String stockSkuId = skuId;
String spuId = skuVo.getSpuId();
if (skuVo.getUnbox().equals("1")) {// 盲盒逻辑 if (skuVo.getUnbox().equals("1")) {// 盲盒逻辑
GoblinGoodsInfoVo spuInfoVo = goblinRedisUtils.getGoodsInfoVo(spuId); GoblinGoodsInfoVo spuInfoVo = goblinRedisUtils.getGoodsInfoVo(spuId);
List<String> skuIdList = spuInfoVo.getSkuIdList(); List<String> skuIdList = spuInfoVo.getSkuIdList();
...@@ -215,32 +208,12 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService { ...@@ -215,32 +208,12 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
ArrayList<GoblinGoodsSkuInfoVo> skuInfoVos = ObjectUtil.cloneArrayGoblinGoodsSkuInfoListVo(); ArrayList<GoblinGoodsSkuInfoVo> skuInfoVos = ObjectUtil.cloneArrayGoblinGoodsSkuInfoListVo();
for (String kid : skuIdList) { for (String kid : skuIdList) {
GoblinGoodsSkuInfoVo skuInfoVo = goblinRedisUtils.getGoodsSkuInfoVo(kid); GoblinGoodsSkuInfoVo skuInfoVo = goblinRedisUtils.getGoodsSkuInfoVo(kid);
// 不能购买的过滤 // 不能购买的 没库存的过滤
if ( if (!nftOrderUtils.getSkuAllStatusShow(skuInfoVo) && nftOrderUtils.getSkuAllStatusStock(skuInfoVo) > 0) {
null == skuInfoVo ||
!skuInfoVo.getStatus().equals("3") ||
!skuInfoVo.getShelvesStatus().equals("3") ||
skuInfoVo.getSoldoutStatus().equals("1") ||
skuInfoVo.getSkuAppear().equals("1") ||
skuInfoVo.getSkuCanbuy().equals("0") ||
skuInfoVo.getDelFlg().equals("1")
) {
continue;
}
// 开售停售时间
LocalDateTime saleStartTime = skuInfoVo.getSaleStartTime();
LocalDateTime saleStopTime = skuInfoVo.getSaleStopTime();
LocalDateTime nowTime = LocalDateTime.now();
if (nowTime.isBefore(saleStartTime)) {
continue; continue;
} else if (null != saleStopTime && nowTime.isAfter(saleStopTime)) {
continue;
}
// 库存
int skuStock = goblinRedisUtils.getSkuStock(kid);
if (skuStock > 0) {// 有库存的加入奖池
skuInfoVos.add(skuInfoVo);
} }
// 有库存的加入奖池
skuInfoVos.add(skuInfoVo);
} }
if (CollectionUtil.isEmpty(skuInfoVos)) { if (CollectionUtil.isEmpty(skuInfoVos)) {
return null; return null;
......
...@@ -9,10 +9,7 @@ import com.liquidnet.service.base.constant.MQConst; ...@@ -9,10 +9,7 @@ import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.candy.vo.CandyUseResultVo; import com.liquidnet.service.candy.vo.CandyUseResultVo;
import com.liquidnet.service.goblin.constant.GoblinRedisConst; import com.liquidnet.service.goblin.constant.GoblinRedisConst;
import com.liquidnet.service.goblin.constant.GoblinStatusConst; import com.liquidnet.service.goblin.constant.GoblinStatusConst;
import com.liquidnet.service.goblin.dto.vo.GoblinNftOrderRefundVo; import com.liquidnet.service.goblin.dto.vo.*;
import com.liquidnet.service.goblin.dto.vo.GoblinNftOrderVo;
import com.liquidnet.service.goblin.dto.vo.GoblinUseResultVo;
import com.liquidnet.service.goblin.dto.vo.GoblinUserCouponVo;
import com.liquidnet.service.goblin.entity.GoblinNftOrderRefund; import com.liquidnet.service.goblin.entity.GoblinNftOrderRefund;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -335,4 +332,46 @@ public class GoblinNftOrderUtils { ...@@ -335,4 +332,46 @@ public class GoblinNftOrderUtils {
return false; return false;
} }
} }
/**
* private int skuType 商品类型[0-常规|1-数字藏品]
* private String status 审核状态[0-初始编辑|1-审核中|2-审核不通过|3-审核通过];
* private String shelvesStatus 单品上架状态[0-待上架|1-下架|2-违规|3-上架];
* private String skuAppear 是否隐藏[0-默认展示|1-隐藏];
* private String delFlg 删除标记[0-未删除|1-删除];
*
* private LocalDateTime saleStartTime 开售时间;
* private LocalDateTime saleStopTime 停售时间 预留 暂时不做处理;
* private String soldoutStatus 是否售罄[0-否|1-是];
*
* private String skuCanbuy 是否购买[0-否|1-是] 这个用来预览 前端自己判断;
*/
// 获取盲盒下藏品的库存 各种状态下不能算库存的排除掉
public int getSkuAllStatusStock(GoblinGoodsSkuInfoVo info) {
if (
info != null
&& LocalDateTime.now().isAfter(info.getSaleStartTime())
&& (null == info.getSoldoutStatus() || info.getSoldoutStatus().equals("0"))
&& info.getSkuCanbuy().equals("1")
) {// 可以返回库存
return goblinRedisUtils.getSkuStock(info.getSkuId());
} else {// 不计入库存
return 0;
}
}
// 各种状态下判断藏品是否可以展示
public boolean getSkuAllStatusShow(GoblinGoodsSkuInfoVo info) {
if (
info != null
&& info.getSkuType() == 1
&& info.getStatus().equals("3")
&& info.getShelvesStatus().equals("3")
&& info.getSkuAppear().equals("0")
&& info.getDelFlg().equals("0")
) {
return true;
} else {
return false;
}
}
} }
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