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

Commit 8c5fd082 authored by 胡佳晨's avatar 胡佳晨

增加 分批购 支持盲盒配置

parent 379e8fe9
...@@ -247,6 +247,7 @@ public class GoblinRedisConst { ...@@ -247,6 +247,7 @@ public class GoblinRedisConst {
public static final String REDIS_WHITE = PREFIX.concat("white:");//白名单 key:$listId:$skuId:$mobile public static final String REDIS_WHITE = PREFIX.concat("white:");//白名单 key:$listId:$skuId:$mobile
public static final String LIST_COLLECT = PREFIX.concat("list:collect");//名单列表详情 $key:$skuId public static final String LIST_COLLECT = PREFIX.concat("list:collect");//名单列表详情 $key:$skuId
public static final String ADAM_IS_MEMBER = "kylin:member:uid:";//是否会员 $key:$uid public static final String ADAM_IS_MEMBER = "kylin:member:uid:";//是否会员 $key:$uid
public static final String LIST_RELATION_BOX = PREFIX.concat("list:relation:box");//名单列表详情 $key:$skuId:$listId
/** /**
* nft兑换活动配置 * nft兑换活动配置
*/ */
......
...@@ -15,6 +15,7 @@ import com.liquidnet.service.goblin.param.GoblinListCreateParam; ...@@ -15,6 +15,7 @@ import com.liquidnet.service.goblin.param.GoblinListCreateParam;
import com.liquidnet.service.goblin.param.GoblinListUpdateParam; import com.liquidnet.service.goblin.param.GoblinListUpdateParam;
import com.liquidnet.service.goblin.service.manage.IGoblinListService; import com.liquidnet.service.goblin.service.manage.IGoblinListService;
import com.liquidnet.service.goblin.util.*; import com.liquidnet.service.goblin.util.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -22,10 +23,7 @@ import java.math.BigDecimal; ...@@ -22,10 +23,7 @@ import java.math.BigDecimal;
import java.text.DateFormat; import java.text.DateFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.HashMap; import java.util.*;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import static com.liquidnet.commons.lang.util.DateUtil.DTF_YMD_HMS; import static com.liquidnet.commons.lang.util.DateUtil.DTF_YMD_HMS;
...@@ -38,6 +36,7 @@ import static com.liquidnet.commons.lang.util.DateUtil.DTF_YMD_HMS; ...@@ -38,6 +36,7 @@ import static com.liquidnet.commons.lang.util.DateUtil.DTF_YMD_HMS;
* @since 2022-04-29 * @since 2022-04-29
*/ */
@Service @Service
@Slf4j
public class GoblinListServiceImpl implements IGoblinListService { public class GoblinListServiceImpl implements IGoblinListService {
@Autowired @Autowired
...@@ -79,7 +78,16 @@ public class GoblinListServiceImpl implements IGoblinListService { ...@@ -79,7 +78,16 @@ public class GoblinListServiceImpl implements IGoblinListService {
for (GoblinListDetailsItemVo item : vo.getItemVo()) { for (GoblinListDetailsItemVo item : vo.getItemVo()) {
GoblinGoodsSkuInfoVo skuVo = redisUtils.getGoodsSkuInfoVo(item.getSkuId()); GoblinGoodsSkuInfoVo skuVo = redisUtils.getGoodsSkuInfoVo(item.getSkuId());
item.setSkuName(skuVo.getName()); item.setSkuName(skuVo.getName());
item.setSurplusStock(redisUtils.getSkuStock(listId, skuVo.getSkuId())); if (skuVo.getUnbox().equals("1")) {
int stock = 0;
ArrayList<String> skuIdList = redisUtils.getGoblinListRelationBox(vo.getListId(), skuVo.getSkuId());
for (String relationSkuId : skuIdList) {
stock += redisUtils.getSkuStock(listId, relationSkuId);
}
item.setSurplusStock(stock);
} else {
item.setSurplusStock(redisUtils.getSkuStock(listId, skuVo.getSkuId()));
}
// if (skuVo.getUnbox().equals("0")) { // if (skuVo.getUnbox().equals("0")) {
// item.setSurplusStock(redisUtils.getSkuStock(null, item.getSkuId())); // item.setSurplusStock(redisUtils.getSkuStock(null, item.getSkuId()));
// item.setStock(skuVo.getSkuStock()); // item.setStock(skuVo.getSkuStock());
...@@ -117,7 +125,7 @@ public class GoblinListServiceImpl implements IGoblinListService { ...@@ -117,7 +125,7 @@ public class GoblinListServiceImpl implements IGoblinListService {
return ResponseDto.failure("只能配置一个sku"); return ResponseDto.failure("只能配置一个sku");
} }
//判断重名 //判断重名
if(mongoUtils.hasGoblinListDetailsVoByName(param.getName())){ if (mongoUtils.hasGoblinListDetailsVoByName(param.getName())) {
return ResponseDto.failure("活动名称重复"); return ResponseDto.failure("活动名称重复");
} }
String skuId = param.getItemParams().get(0).getSkuId(); String skuId = param.getItemParams().get(0).getSkuId();
...@@ -136,7 +144,7 @@ public class GoblinListServiceImpl implements IGoblinListService { ...@@ -136,7 +144,7 @@ public class GoblinListServiceImpl implements IGoblinListService {
collectVos = redisUtils.getGoblinListCollect(skuId); collectVos = redisUtils.getGoblinListCollect(skuId);
boolean isSame = judgeTime(st, et, collectVos); boolean isSame = judgeTime(st, et, collectVos);
if(isSame){ if (isSame) {
return ResponseDto.failure("sku时间不能重合"); return ResponseDto.failure("sku时间不能重合");
} }
for (GoblinListCollectVo collectItem : collectVos) { for (GoblinListCollectVo collectItem : collectVos) {
...@@ -211,14 +219,20 @@ public class GoblinListServiceImpl implements IGoblinListService { ...@@ -211,14 +219,20 @@ public class GoblinListServiceImpl implements IGoblinListService {
} }
} }
Map<String, Integer> skuMap = nftBoxUtils.getSkuHitRatio(item.getSkuStock(), map); Map<String, Integer> skuMap = nftBoxUtils.getSkuHitRatio(item.getSkuStock(), map);
//库存 for (String key : skuMap.keySet()) {
int skuStock = redisUtils.decrSkuStock(null, itemVo.getSkuId(), itemVo.getSkuStock()); Integer stockNum = skuMap.get(key);
if (skuStock < 0) { //库存
redisUtils.incrSkuStock(null, itemVo.getSkuId(), itemVo.getSkuStock()); int skuStock = redisUtils.decrSkuStock(null, key, stockNum);
return ResponseDto.failure("库存不足"); log.info("盲盒库存 SKUID = " + key + " 数量 = " + stockNum);
} else { if (skuStock < 0) {
redisUtils.setSkuStock(vo.getListId(), itemVo.getSkuId(), itemVo.getSkuStock()); redisUtils.incrSkuStock(null, key, stockNum);
return ResponseDto.failure("库存不足");
} else {
redisUtils.setSkuStock(vo.getListId(), key, stockNum);
redisUtils.addGoblinListRelationBox(vo.getListId(), itemVo.getSkuId(), key);
}
} }
} else {//非盲盒逻辑 } else {//非盲盒逻辑
//库存 //库存
int skuStock = redisUtils.decrSkuStock(null, itemVo.getSkuId(), itemVo.getSkuStock()); int skuStock = redisUtils.decrSkuStock(null, itemVo.getSkuId(), itemVo.getSkuStock());
......
...@@ -2237,6 +2237,29 @@ public class GoblinRedisUtils { ...@@ -2237,6 +2237,29 @@ public class GoblinRedisUtils {
} }
} }
/**
* 设置 盲盒skuId 关联 的skuId
*/
public void addGoblinListRelationBox(String skuId, String listId ,String relationSkuId) {
String rdk = GoblinRedisConst.LIST_RELATION_BOX.concat(skuId).concat(":"+listId);
ArrayList<String> list = getGoblinListRelationBox(skuId,listId);
list.add(relationSkuId);
redisUtil.set(rdk, list);
}
/**
* 获取 盲盒skuId 关联 的skuId
*/
public ArrayList<String> getGoblinListRelationBox(String skuId, String listId) {
String rdk = GoblinRedisConst.LIST_RELATION_BOX.concat(skuId).concat(":"+listId);
Object obj = redisUtil.get(rdk);
if(obj==null){
return CollectionUtil.arrayListString();
}else{
return (ArrayList<String>) obj;
}
}
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | NFT三要素认证缓存的<ID_TYPE+ID_NO, "ID_NAME,MOBILE"> */ /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | NFT三要素认证缓存的<ID_TYPE+ID_NO, "ID_NAME,MOBILE"> */
public boolean setCertmetaJunk(int idType, String idNo, String idName, String mobile) { public boolean setCertmetaJunk(int idType, String idNo, String idName, String mobile) {
......
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