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

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

增加 分批购 支持盲盒配置

parent 379e8fe9
......@@ -247,6 +247,7 @@ public class GoblinRedisConst {
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 ADAM_IS_MEMBER = "kylin:member:uid:";//是否会员 $key:$uid
public static final String LIST_RELATION_BOX = PREFIX.concat("list:relation:box");//名单列表详情 $key:$skuId:$listId
/**
* nft兑换活动配置
*/
......
......@@ -15,6 +15,7 @@ import com.liquidnet.service.goblin.param.GoblinListCreateParam;
import com.liquidnet.service.goblin.param.GoblinListUpdateParam;
import com.liquidnet.service.goblin.service.manage.IGoblinListService;
import com.liquidnet.service.goblin.util.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -22,10 +23,7 @@ import java.math.BigDecimal;
import java.text.DateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.*;
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
*/
@Service
@Slf4j
public class GoblinListServiceImpl implements IGoblinListService {
@Autowired
......@@ -79,7 +78,16 @@ public class GoblinListServiceImpl implements IGoblinListService {
for (GoblinListDetailsItemVo item : vo.getItemVo()) {
GoblinGoodsSkuInfoVo skuVo = redisUtils.getGoodsSkuInfoVo(item.getSkuId());
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")) {
// item.setSurplusStock(redisUtils.getSkuStock(null, item.getSkuId()));
// item.setStock(skuVo.getSkuStock());
......@@ -117,7 +125,7 @@ public class GoblinListServiceImpl implements IGoblinListService {
return ResponseDto.failure("只能配置一个sku");
}
//判断重名
if(mongoUtils.hasGoblinListDetailsVoByName(param.getName())){
if (mongoUtils.hasGoblinListDetailsVoByName(param.getName())) {
return ResponseDto.failure("活动名称重复");
}
String skuId = param.getItemParams().get(0).getSkuId();
......@@ -136,7 +144,7 @@ public class GoblinListServiceImpl implements IGoblinListService {
collectVos = redisUtils.getGoblinListCollect(skuId);
boolean isSame = judgeTime(st, et, collectVos);
if(isSame){
if (isSame) {
return ResponseDto.failure("sku时间不能重合");
}
for (GoblinListCollectVo collectItem : collectVos) {
......@@ -211,14 +219,20 @@ public class GoblinListServiceImpl implements IGoblinListService {
}
}
Map<String, Integer> skuMap = nftBoxUtils.getSkuHitRatio(item.getSkuStock(), map);
//库存
int skuStock = redisUtils.decrSkuStock(null, itemVo.getSkuId(), itemVo.getSkuStock());
if (skuStock < 0) {
redisUtils.incrSkuStock(null, itemVo.getSkuId(), itemVo.getSkuStock());
return ResponseDto.failure("库存不足");
} else {
redisUtils.setSkuStock(vo.getListId(), itemVo.getSkuId(), itemVo.getSkuStock());
for (String key : skuMap.keySet()) {
Integer stockNum = skuMap.get(key);
//库存
int skuStock = redisUtils.decrSkuStock(null, key, stockNum);
log.info("盲盒库存 SKUID = " + key + " 数量 = " + stockNum);
if (skuStock < 0) {
redisUtils.incrSkuStock(null, key, stockNum);
return ResponseDto.failure("库存不足");
} else {
redisUtils.setSkuStock(vo.getListId(), key, stockNum);
redisUtils.addGoblinListRelationBox(vo.getListId(), itemVo.getSkuId(), key);
}
}
} else {//非盲盒逻辑
//库存
int skuStock = redisUtils.decrSkuStock(null, itemVo.getSkuId(), itemVo.getSkuStock());
......
......@@ -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"> */
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