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

Commit 7a343950 authored by jiangxiulong's avatar jiangxiulong

nft商品列表

parent 4a808db2
package com.liquidnet.service.goblin.service.impl; package com.liquidnet.service.goblin.service.impl;
import com.liquidnet.common.cache.redis.util.RedisUtil; import com.liquidnet.common.cache.redis.util.RedisUtil;
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.PagedResult; import com.liquidnet.service.base.PagedResult;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
...@@ -25,7 +26,6 @@ import org.springframework.data.mongodb.core.query.Query; ...@@ -25,7 +26,6 @@ import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -49,36 +49,36 @@ public class GoblinNftGoodsAppServiceImpl implements IGoblinNftGoodsAppService { ...@@ -49,36 +49,36 @@ public class GoblinNftGoodsAppServiceImpl implements IGoblinNftGoodsAppService {
@Autowired @Autowired
IGoblinGoodsAnticipateMgService goblinGoodsAnticipateMgService; IGoblinGoodsAnticipateMgService goblinGoodsAnticipateMgService;
final static int size = 40;
@Override @Override
public ResponseDto<PagedResult<GoblinNftGoodsSkuListVo>> goodsList(int page) { public ResponseDto<PagedResult<GoblinNftGoodsSkuListVo>> goodsList(int page) {
int size = 40;
//条件
List<String> skuIdList = goblinRedisUtils.getGoblinNftGoodsInfoListVo(); List<String> skuIdList = goblinRedisUtils.getGoblinNftGoodsInfoListVo();
List<GoblinNftGoodsSkuListVo> skuList = new ArrayList<>(); List<GoblinNftGoodsSkuListVo> skuList = ObjectUtil.getGoblinNftGoodsSkuListVoArrayList();
if (null == skuIdList || page > 1) { if (CollectionUtil.isEmpty(skuIdList) || page > 1) {// 查mongo
skuIdList = new ArrayList<>(); //条件
// 分页 排序:按照开售时间
Query query = Query.query( Query query = Query.query(
Criteria.where("skuType").is(1) Criteria.where("skuType").is(1).and("delFlg").is("0")
.and("delFlg").is("0") .and("status").is("3").and("shelvesStatus").is("3")
.and("status").is("3")
.and("shelvesStatus").is("3")
.and("skuAppear").is("0") .and("skuAppear").is("0")
); );
// 分页 排序:按照开售时间
Pageable pageable = PageRequest.of(page - 1, size, Sort.by(Sort.Direction.ASC, "saleStartTime")); Pageable pageable = PageRequest.of(page - 1, size, Sort.by(Sort.Direction.ASC, "saleStartTime"));
query.with(pageable); query.with(pageable);
// 查询
List<GoblinGoodsSkuInfoVo> skuInfoVos = mongoTemplate.find(query, GoblinGoodsSkuInfoVo.class, GoblinGoodsSkuInfoVo.class.getSimpleName()); List<GoblinGoodsSkuInfoVo> skuInfoVos = mongoTemplate.find(query, GoblinGoodsSkuInfoVo.class, GoblinGoodsSkuInfoVo.class.getSimpleName());
for (GoblinGoodsSkuInfoVo info : skuInfoVos) { for (GoblinGoodsSkuInfoVo skuInfoVo : skuInfoVos) {
//获取预约相关 // 获取预约相关
AnticipateValueVo anticipateValueVo = goblinGoodsAnticipateMgService.getAnticipateValueBySkuId(info.getSkuId(), 0); AnticipateValueVo anticipateValueVo = goblinGoodsAnticipateMgService.getAnticipateValueBySkuId(skuInfoVo.getSkuId(), 0);
// sku信息 // sku信息
GoblinNftGoodsSkuListVo nftGoodsSkuInfoVo = GoblinNftGoodsSkuListVo.getNew().copy(info, anticipateValueVo); GoblinNftGoodsSkuListVo nftGoodsSkuInfoVo = GoblinNftGoodsSkuListVo.getNew().copy(skuInfoVo, anticipateValueVo);
// spu信息 // spu信息
GoblinGoodsInfoVo goodsInfoVo = goblinRedisUtils.getGoodsInfoVo(info.getSpuId()); GoblinGoodsInfoVo goodsInfoVo = goblinRedisUtils.getGoodsInfoVo(skuInfoVo.getSpuId());
GoblinNftGoodsSpuInfoVo nftGoodsSpuInfoVo = GoblinNftGoodsSpuInfoVo.getNew().copy(goodsInfoVo); GoblinNftGoodsSpuInfoVo nftGoodsSpuInfoVo = GoblinNftGoodsSpuInfoVo.getNew().copy(goodsInfoVo);
nftGoodsSkuInfoVo.setGoblinNftGoodsSpuInfoVo(nftGoodsSpuInfoVo); nftGoodsSkuInfoVo.setGoblinNftGoodsSpuInfoVo(nftGoodsSpuInfoVo);
// 库存
int isStock = getIsStock(skuInfoVo.getSkuId(), skuInfoVo.getUnbox(), skuInfoVo.getSoldoutStatus(), goodsInfoVo.getSkuIdList());
nftGoodsSkuInfoVo.setIsStock(isStock);
// 写入列表 // 写入列表
skuList.add(nftGoodsSkuInfoVo); skuList.add(nftGoodsSkuInfoVo);
skuIdList.add(nftGoodsSkuInfoVo.getSkuId()); skuIdList.add(nftGoodsSkuInfoVo.getSkuId());
...@@ -88,37 +88,23 @@ public class GoblinNftGoodsAppServiceImpl implements IGoblinNftGoodsAppService { ...@@ -88,37 +88,23 @@ public class GoblinNftGoodsAppServiceImpl implements IGoblinNftGoodsAppService {
} }
} else { } else {
for (String skuId : skuIdList) { for (String skuId : skuIdList) {
GoblinGoodsSkuInfoVo goodsSkuInfoVo = goblinRedisUtils.getGoodsSkuInfoVo(skuId); // 获取预约相关
GoblinNftGoodsSkuListVo goblinNftGoodsSkuListVo = GoblinNftGoodsSkuListVo.getNew().copy(goodsSkuInfoVo, null); AnticipateValueVo anticipateValueVo = goblinGoodsAnticipateMgService.getAnticipateValueBySkuId(skuId, 0);
// sku信息
GoblinGoodsSkuInfoVo skuInfoVo = goblinRedisUtils.getGoodsSkuInfoVo(skuId);
GoblinNftGoodsSkuListVo goblinNftGoodsSkuListVo = GoblinNftGoodsSkuListVo.getNew().copy(skuInfoVo, anticipateValueVo);
// spu信息 // spu信息
GoblinGoodsInfoVo goodsInfoVo = goblinRedisUtils.getGoodsInfoVo(goodsSkuInfoVo.getSpuId()); GoblinGoodsInfoVo goodsInfoVo = goblinRedisUtils.getGoodsInfoVo(skuInfoVo.getSpuId());
GoblinNftGoodsSpuInfoVo nftGoodsSpuInfoVo = GoblinNftGoodsSpuInfoVo.getNew().copy(goodsInfoVo); GoblinNftGoodsSpuInfoVo nftGoodsSpuInfoVo = GoblinNftGoodsSpuInfoVo.getNew().copy(goodsInfoVo);
goblinNftGoodsSkuListVo.setGoblinNftGoodsSpuInfoVo(nftGoodsSpuInfoVo); goblinNftGoodsSkuListVo.setGoblinNftGoodsSpuInfoVo(nftGoodsSpuInfoVo);
// 库存
int isStock = getIsStock(skuId, skuInfoVo.getUnbox(), skuInfoVo.getSoldoutStatus(), goodsInfoVo.getSkuIdList());
goblinNftGoodsSkuListVo.setIsStock(isStock);
// 写入列表
skuList.add(goblinNftGoodsSkuListVo); skuList.add(goblinNftGoodsSkuListVo);
} }
} }
for (GoblinNftGoodsSkuListVo skuInfoVo : skuList) { // 库存售罄排序
int stock = 0;
if (skuInfoVo.getUnbox().equals("0")) {
if (null == skuInfoVo.getSoldoutStatus() || skuInfoVo.getSoldoutStatus().equals("0")) {
stock = goblinRedisUtils.getSkuStock(null, skuInfoVo.getSkuId());
}
} else {
String spuId = skuInfoVo.getSpuId();
List<String> skuArray = goblinRedisUtils.getGoodsInfoVo(spuId).getSkuIdList();
for (String skuIdItem : skuArray) {
GoblinGoodsSkuInfoVo itemVo = goblinRedisUtils.getGoodsSkuInfoVo(skuIdItem);
stock += goblinRedisUtils.getSkuAllStatusStock(itemVo);
}
}
if (stock <= 0 || (null != skuInfoVo.getSoldoutStatus() && skuInfoVo.getSoldoutStatus().equals("1"))) {
skuInfoVo.setIsStock(0);
} else {
skuInfoVo.setIsStock(1);
}
}
List<GoblinNftGoodsSkuListVo> listSort = skuList.stream().sorted(Comparator.comparing(GoblinNftGoodsSkuListVo::getIsStock).reversed()).collect(Collectors.toList()); List<GoblinNftGoodsSkuListVo> listSort = skuList.stream().sorted(Comparator.comparing(GoblinNftGoodsSkuListVo::getIsStock).reversed()).collect(Collectors.toList());
PagedResult<GoblinNftGoodsSkuListVo> listVoPagedResult = ObjectUtil.getGoblinNftGoodsSkuListVoPagedResult(); PagedResult<GoblinNftGoodsSkuListVo> listVoPagedResult = ObjectUtil.getGoblinNftGoodsSkuListVoPagedResult();
...@@ -128,49 +114,58 @@ public class GoblinNftGoodsAppServiceImpl implements IGoblinNftGoodsAppService { ...@@ -128,49 +114,58 @@ public class GoblinNftGoodsAppServiceImpl implements IGoblinNftGoodsAppService {
@Override @Override
public GoblinNftGoodsSkuInfoVo goodsDetail(String skuId) { public GoblinNftGoodsSkuInfoVo goodsDetail(String skuId) {
GoblinGoodsSkuInfoVo goodsSkuInfoVo = goblinRedisUtils.getGoodsSkuInfoVo(skuId); GoblinGoodsSkuInfoVo skuInfoVo = goblinRedisUtils.getGoodsSkuInfoVo(skuId);
if (goblinRedisUtils.getSkuAllStatusShow(goodsSkuInfoVo)) { if (goblinRedisUtils.getSkuAllStatusShow(skuInfoVo)) {
//获取预约相关 //获取预约相关
AnticipateValueVo anticipateValueVo = goblinGoodsAnticipateMgService.getAnticipateValueBySkuId(skuId, 1); AnticipateValueVo anticipateValueVo = goblinGoodsAnticipateMgService.getAnticipateValueBySkuId(skuId, 1);
GoblinNftGoodsSkuInfoVo nftGoodsSkuInfoVo = GoblinNftGoodsSkuInfoVo.getNew().copy(goodsSkuInfoVo, anticipateValueVo); GoblinNftGoodsSkuInfoVo nftGoodsSkuInfoVo = GoblinNftGoodsSkuInfoVo.getNew().copy(skuInfoVo, anticipateValueVo);
// 限购数量 // 限购数量
Integer buyCount = 0; Integer buyCount = 0;
String userId = CurrentUtil.getCurrentUid(); String userId = CurrentUtil.getCurrentUid();
if (StringUtils.isNotBlank(userId)) { if (StringUtils.isNotBlank(userId)) {
buyCount = goblinRedisUtils.getSkuCountByUid(userId, skuId); buyCount = goblinRedisUtils.getSkuCountByUid(userId, skuId);
} }
if (null != goodsSkuInfoVo.getBuyLimit() && 0 != goodsSkuInfoVo.getBuyLimit()) { if (null != skuInfoVo.getBuyLimit() && 0 != skuInfoVo.getBuyLimit()) {
nftGoodsSkuInfoVo.setCanBuyNum(goodsSkuInfoVo.getBuyLimit() - buyCount); nftGoodsSkuInfoVo.setCanBuyNum(skuInfoVo.getBuyLimit() - buyCount);
} }
// 库存 盲盒计算所有sku库存总数 // spu信息
GoblinGoodsInfoVo goodsInfoVo = goblinRedisUtils.getGoodsInfoVo(skuInfoVo.getSpuId());
GoblinNftGoodsDetailSpuInfoVo nftGoodsDetailSpuInfoVo = GoblinNftGoodsDetailSpuInfoVo.getNew().copy(goodsInfoVo);
nftGoodsSkuInfoVo.setGoblinNftGoodsDetailSpuInfoVo(nftGoodsDetailSpuInfoVo);
// 库存
int isStock = getIsStock(skuId, skuInfoVo.getUnbox(), skuInfoVo.getSoldoutStatus(), goodsInfoVo.getSkuIdList());
nftGoodsSkuInfoVo.setIsStock(isStock);
// 系统时间
nftGoodsSkuInfoVo.setSystime(LocalDateTime.now());
return nftGoodsSkuInfoVo;
} else {
return null;
}
}
// 判断是否售罄
private int getIsStock(String skuId, String unbox, String soldoutStatus, List<String> skuIdList) {
if (null == soldoutStatus || soldoutStatus.equals("0")) {// 未设置售罄 查询库存
int stock = 0; int stock = 0;
if (goodsSkuInfoVo.getUnbox().equals("0")) { if (unbox.equals("0")) {// 不是盲盒
if (null == goodsSkuInfoVo.getSoldoutStatus() || goodsSkuInfoVo.getSoldoutStatus().equals("0")) { stock = goblinRedisUtils.getSkuStock(null, skuId);
stock = goblinRedisUtils.getSkuStock(null, skuId);
}
} else { } else {
String spuId = goodsSkuInfoVo.getSpuId(); for (String skuIdItem : skuIdList) {// 盲盒计算所有sku库存总数
List<String> skuArray = goblinRedisUtils.getGoodsInfoVo(spuId).getSkuIdList(); if (skuIdItem.equals(skuId)) {// 过滤自己
for (String skuIdItem : skuArray) { continue;
}
GoblinGoodsSkuInfoVo itemVo = goblinRedisUtils.getGoodsSkuInfoVo(skuIdItem); GoblinGoodsSkuInfoVo itemVo = goblinRedisUtils.getGoodsSkuInfoVo(skuIdItem);
stock += goblinRedisUtils.getSkuAllStatusStock(itemVo); stock += goblinRedisUtils.getSkuAllStatusStock(itemVo);
} }
} }
log.info("skuId:{}, 库存数量:{}", skuId, stock);
if (stock <= 0) { if (stock <= 0) {
nftGoodsSkuInfoVo.setIsStock(0); return 0;
} else { } else {
nftGoodsSkuInfoVo.setIsStock(1); return 1;
} }
// spu信息
GoblinGoodsInfoVo goodsInfoVo = goblinRedisUtils.getGoodsInfoVo(goodsSkuInfoVo.getSpuId());
GoblinNftGoodsDetailSpuInfoVo nftGoodsDetailSpuInfoVo = GoblinNftGoodsDetailSpuInfoVo.getNew().copy(goodsInfoVo);
nftGoodsSkuInfoVo.setGoblinNftGoodsDetailSpuInfoVo(nftGoodsDetailSpuInfoVo);
nftGoodsSkuInfoVo.setSystime(LocalDateTime.now());
return nftGoodsSkuInfoVo;
} else { } else {
return null; return 0;
} }
} }
......
...@@ -6,7 +6,6 @@ import com.liquidnet.common.cache.redis.util.RedisUtil; ...@@ -6,7 +6,6 @@ import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.CollectionUtil; import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.commons.lang.util.RandomUtil; import com.liquidnet.commons.lang.util.RandomUtil;
import com.liquidnet.service.adam.dto.vo.AdamUserProfileVo;
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.GoblinStoreMarketDto; import com.liquidnet.service.goblin.dto.GoblinStoreMarketDto;
...@@ -1511,7 +1510,7 @@ public class GoblinRedisUtils { ...@@ -1511,7 +1510,7 @@ public class GoblinRedisUtils {
String redisKey = GoblinRedisConst.REDIS_GOBLIN_NFT_GOODS_LIST; String redisKey = GoblinRedisConst.REDIS_GOBLIN_NFT_GOODS_LIST;
Object obj = redisUtil.get(redisKey); Object obj = redisUtil.get(redisKey);
if (obj == null) { if (obj == null) {
return null; return CollectionUtil.arrayListString();
} else { } else {
return (List<String>) obj; return (List<String>) obj;
} }
......
...@@ -79,6 +79,7 @@ public class ObjectUtil { ...@@ -79,6 +79,7 @@ public class ObjectUtil {
private static final ArrayList<BackCouponParam> backCouponParam = new ArrayList<>(); private static final ArrayList<BackCouponParam> backCouponParam = new ArrayList<>();
private static final ArrayList<GoblinMailVo> goblinMailVo = new ArrayList<>(); private static final ArrayList<GoblinMailVo> goblinMailVo = new ArrayList<>();
private static final ArrayList<GoblinPosGoodsVo> goblinPosGoodsVoArrayList = new ArrayList<>(); private static final ArrayList<GoblinPosGoodsVo> goblinPosGoodsVoArrayList = new ArrayList<>();
private static final ArrayList<GoblinNftGoodsSkuListVo> goblinNftGoodsSkuListVoArrayList = new ArrayList<>();
private static final ArrayList<TempCouponVo> tempCouponVo = new ArrayList<>(); private static final ArrayList<TempCouponVo> tempCouponVo = new ArrayList<>();
private static final ArrayList<GoblinUserDigitalArtworkListVo> GOBLIN_USER_DIGITAL_ARTWORK_LIST_VO_ARRAY_LIST = new ArrayList<>(); private static final ArrayList<GoblinUserDigitalArtworkListVo> GOBLIN_USER_DIGITAL_ARTWORK_LIST_VO_ARRAY_LIST = new ArrayList<>();
private static final PagedResult<GoblinStoreMgtGoodsSkuListVo> goblinStoreMgtGoodsSkuListVo = new PagedResult<>(); private static final PagedResult<GoblinStoreMgtGoodsSkuListVo> goblinStoreMgtGoodsSkuListVo = new PagedResult<>();
...@@ -325,6 +326,10 @@ public class ObjectUtil { ...@@ -325,6 +326,10 @@ public class ObjectUtil {
return (ArrayList<GoblinPosGoodsVo>) goblinPosGoodsVoArrayList.clone(); return (ArrayList<GoblinPosGoodsVo>) goblinPosGoodsVoArrayList.clone();
} }
public static ArrayList<GoblinNftGoodsSkuListVo> getGoblinNftGoodsSkuListVoArrayList() {
return (ArrayList<GoblinNftGoodsSkuListVo>) goblinNftGoodsSkuListVoArrayList.clone();
}
public static ArrayList<GoblinUserDigitalArtworkListVo> getGoblinUserDigitalArtworkListVoArrayList() { public static ArrayList<GoblinUserDigitalArtworkListVo> getGoblinUserDigitalArtworkListVoArrayList() {
return (ArrayList<GoblinUserDigitalArtworkListVo>) GOBLIN_USER_DIGITAL_ARTWORK_LIST_VO_ARRAY_LIST.clone(); return (ArrayList<GoblinUserDigitalArtworkListVo>) GOBLIN_USER_DIGITAL_ARTWORK_LIST_VO_ARRAY_LIST.clone();
} }
......
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