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

Commit 52f2dc4e authored by 胡佳晨's avatar 胡佳晨

提交 结束时间未填写分段购 sku详情逻辑

增加 上个时间段 库存未售罄的库存
parent 271958c4
...@@ -715,7 +715,7 @@ public class GoblinRedisUtils { ...@@ -715,7 +715,7 @@ public class GoblinRedisUtils {
GoblinGoodsSkuInfoVo vo = getGoodsSkuInfoVo(skuId); GoblinGoodsSkuInfoVo vo = getGoodsSkuInfoVo(skuId);
HashMap<String, Object> map = CollectionUtil.mapStringObject(); HashMap<String, Object> map = CollectionUtil.mapStringObject();
if (now.isAfter(vo.getSaleStartTime())) {//普通商品已开售 if (now.isAfter(vo.getSaleStartTime())) {//普通商品已开售
lastStockToLastStock(getGoblinListCollect(skuId),null,skuId); lastStockToLastStock(0,getGoblinListCollect(skuId), null, skuId);
map.put("vo", vo); map.put("vo", vo);
map.put("tagType", null); map.put("tagType", null);
map.put("listId", null); map.put("listId", null);
...@@ -763,49 +763,56 @@ public class GoblinRedisUtils { ...@@ -763,49 +763,56 @@ public class GoblinRedisUtils {
if (collectVo == null) { if (collectVo == null) {
collectVo = collectTemp; collectVo = collectTemp;
} }
lastStockToLastStock(collectVos, collectVo, skuId); lastStockToLastStock(1,collectVos, collectVo, skuId);
return collectVo; return collectVo;
} }
/** /**
* 处理上个时间段的库存 * 处理上个时间段的库存
* *
* @param type 类型[0-开售|1-未开售]
* @param collectVos * @param collectVos
* @param vo * @param vo
* @param skuId * @param skuId
*/ */
public void lastStockToLastStock(List<GoblinListCollectVo> collectVos, GoblinListCollectVo vo, String skuId) { public void lastStockToLastStock(Integer type, List<GoblinListCollectVo> collectVos, GoblinListCollectVo vo, String skuId) {
if(vo ==null ){//已开售逻辑 if (vo == null && type == 0) {//已开售逻辑
for (GoblinListCollectVo collectVoItem : collectVos) {
} int lastStock = getSkuStock(collectVoItem.getListId(), skuId);
int restStock = decrSkuStock(collectVoItem.getListId(), skuId, lastStock);
LocalDateTime st = vo.getTimeStart().minusSeconds(1); if (restStock < 0) {
GoblinListCollectVo collectVo = null; incrSkuStock(collectVoItem.getListId(), skuId, lastStock);
GoblinListCollectVo collectTemp = null; } else {
//获取上个分配购的vo incrSkuStock(null, skuId, lastStock);
for (GoblinListCollectVo collectVoItem : collectVos) { }
if (st.isAfter(collectVoItem.getTimeStart()) && collectVoItem.getTimeEnd() == null) {
collectTemp = collectVoItem;
} else if (st.isAfter(collectVoItem.getTimeStart()) && st.isBefore(collectVoItem.getTimeEnd())) {
collectVo = collectVoItem;
break;
} }
} } else if (vo != null && type == 1) {
if (collectVo == null) { LocalDateTime st = vo.getTimeStart().minusSeconds(1);
collectVo = collectTemp; GoblinListCollectVo collectVo = null;
} GoblinListCollectVo collectTemp = null;
if (collectVo == null && collectVos.size() != 0) { //获取上个分配购的vo
for (GoblinListCollectVo collectVoItem : collectVos) {
} else if (collectVo != null) { if (st.isAfter(collectVoItem.getTimeStart()) && collectVoItem.getTimeEnd() == null) {
//减少上个时间段sku库存 collectTemp = collectVoItem;
int lastStock = getSkuStock(collectVo.getListId(), skuId); } else if (st.isAfter(collectVoItem.getTimeStart()) && st.isBefore(collectVoItem.getTimeEnd())) {
int restStock = decrSkuStock(collectVo.getListId(), skuId, lastStock); collectVo = collectVoItem;
if (restStock < 0) { break;
//库存超过销售量 操作失败回滚库存 }
incrSkuStock(collectVo.getListId(), skuId, lastStock); }
} else { if (collectVo == null) {
//上个时间段的库存增加到当前时间段 collectVo = collectTemp;
incrSkuStock(vo.getListId(), skuId, lastStock); }
if (collectVo != null) {
//减少上个时间段sku库存
int lastStock = getSkuStock(collectVo.getListId(), skuId);
int restStock = decrSkuStock(collectVo.getListId(), skuId, lastStock);
if (restStock < 0) {
//库存超过销售量 操作失败回滚库存
incrSkuStock(collectVo.getListId(), skuId, lastStock);
} else {
//上个时间段的库存增加到当前时间段
incrSkuStock(vo.getListId(), skuId, lastStock);
}
} }
} }
} }
......
...@@ -175,27 +175,35 @@ public class GoblinRedisUtils { ...@@ -175,27 +175,35 @@ public class GoblinRedisUtils {
*/ */
public HashMap<String, Object> getGoodsSkuInfoVo(LocalDateTime now, String skuId) { public HashMap<String, Object> getGoodsSkuInfoVo(LocalDateTime now, String skuId) {
GoblinGoodsSkuInfoVo vo = getGoodsSkuInfoVo(skuId); GoblinGoodsSkuInfoVo vo = getGoodsSkuInfoVo(skuId);
GoblinListCollectVo collectVo = getCollectByNow(now,skuId);
HashMap<String, Object> map = CollectionUtil.mapStringObject(); HashMap<String, Object> map = CollectionUtil.mapStringObject();
Integer tagType = null; if (now.isAfter(vo.getSaleStartTime())) {//普通商品已开售
String listId = null; lastStockToLastStock(0,getGoblinListCollect(skuId), null, skuId);
if (collectVo != null) { map.put("vo", vo);
vo.setPrice(collectVo.getPrice()); map.put("tagType", null);
vo.setPriceV(collectVo.getPriceV()); map.put("listId", null);
vo.setProductId(collectVo.getProductId()); } else {//未开售
vo.setSaleStartTime(collectVo.getTimeStart()); GoblinListCollectVo collectVo = getCollectByNow(now, skuId);
vo.setSaleStopTime(collectVo.getTimeEnd()); Integer tagType = null;
tagType = collectVo.getTagType(); String listId = null;
listId = collectVo.getListId(); if (collectVo != null) {
vo.setPrice(collectVo.getPrice());
vo.setPriceV(collectVo.getPriceV());
vo.setProductId(collectVo.getProductId());
vo.setSaleStartTime(collectVo.getTimeStart());
vo.setSaleStopTime(collectVo.getTimeEnd());
tagType = collectVo.getTagType();
listId = collectVo.getListId();
}
map.put("vo", vo);
map.put("tagType", tagType);
map.put("listId", listId);
} }
map.put("vo", vo);
map.put("tagType", tagType);
map.put("listId", listId);
return map; return map;
} }
/** /**
* 根据时间获取当前分段购vo * 根据时间获取当前分段购vo
*
* @param now * @param now
* @param skuId * @param skuId
* @return * @return
...@@ -204,7 +212,6 @@ public class GoblinRedisUtils { ...@@ -204,7 +212,6 @@ public class GoblinRedisUtils {
GoblinListCollectVo collectVo = null; GoblinListCollectVo collectVo = null;
GoblinListCollectVo collectTemp = null; GoblinListCollectVo collectTemp = null;
List<GoblinListCollectVo> collectVos = getGoblinListCollect(skuId); List<GoblinListCollectVo> collectVos = getGoblinListCollect(skuId);
//获取当前
for (GoblinListCollectVo collectVoItem : collectVos) { for (GoblinListCollectVo collectVoItem : collectVos) {
if (now.isAfter(collectVoItem.getTimeStart()) && collectVoItem.getTimeEnd() == null) { if (now.isAfter(collectVoItem.getTimeStart()) && collectVoItem.getTimeEnd() == null) {
if (collectTemp == null || collectTemp.getTimeStart().isBefore(collectVoItem.getTimeStart())) { if (collectTemp == null || collectTemp.getTimeStart().isBefore(collectVoItem.getTimeStart())) {
...@@ -215,45 +222,59 @@ public class GoblinRedisUtils { ...@@ -215,45 +222,59 @@ public class GoblinRedisUtils {
break; break;
} }
} }
if(collectVo==null){ if (collectVo == null) {
collectVo = collectTemp; collectVo = collectTemp;
} }
lastStockToLastStock(collectVos,collectVo,skuId); lastStockToLastStock(1,collectVos, collectVo, skuId);
return collectVo; return collectVo;
} }
/** /**
* 处理上个时间段的库存 * 处理上个时间段的库存
*
* @param type 类型[0-开售|1-未开售]
* @param collectVos * @param collectVos
* @param vo * @param vo
* @param skuId * @param skuId
*/ */
public void lastStockToLastStock(List<GoblinListCollectVo> collectVos ,GoblinListCollectVo vo,String skuId){ public void lastStockToLastStock(Integer type, List<GoblinListCollectVo> collectVos, GoblinListCollectVo vo, String skuId) {
LocalDateTime st = vo.getTimeStart().minusSeconds(1); if (vo == null && type == 0) {//已开售逻辑
GoblinListCollectVo collectVo = null; for (GoblinListCollectVo collectVoItem : collectVos) {
GoblinListCollectVo collectTemp = null; int lastStock = getSkuStock(collectVoItem.getListId(), skuId);
//获取上个分配购的vo int restStock = decrSkuStock(collectVoItem.getListId(), skuId, lastStock);
for (GoblinListCollectVo collectVoItem : collectVos) { if (restStock < 0) {
if (st.isAfter(collectVoItem.getTimeStart()) && collectVoItem.getTimeEnd() == null) { incrSkuStock(collectVoItem.getListId(), skuId, lastStock);
collectTemp = collectVoItem; } else {
}else if (st.isAfter(collectVoItem.getTimeStart()) && st.isBefore(collectVoItem.getTimeEnd())) { incrSkuStock(null, skuId, lastStock);
collectVo = collectVoItem; }
break;
} }
} } else if (vo != null && type == 1) {
if(collectVo==null){ LocalDateTime st = vo.getTimeStart().minusSeconds(1);
collectVo = collectTemp; GoblinListCollectVo collectVo = null;
} GoblinListCollectVo collectTemp = null;
if(collectVo!=null){ //获取上个分配购的vo
//减少上个时间段sku库存 for (GoblinListCollectVo collectVoItem : collectVos) {
int lastStock = getSkuStock(collectVo.getListId(),skuId); if (st.isAfter(collectVoItem.getTimeStart()) && collectVoItem.getTimeEnd() == null) {
int restStock = decrSkuStock(collectVo.getListId(),skuId,lastStock); collectTemp = collectVoItem;
if(restStock<0){ } else if (st.isAfter(collectVoItem.getTimeStart()) && st.isBefore(collectVoItem.getTimeEnd())) {
//库存超过销售量 操作失败回滚库存 collectVo = collectVoItem;
incrSkuStock(collectVo.getListId(),skuId,lastStock); break;
}else{ }
//上个时间段的库存增加到当前时间段 }
incrSkuStock(vo.getListId(),skuId,lastStock); if (collectVo == null) {
collectVo = collectTemp;
}
if (collectVo != null) {
//减少上个时间段sku库存
int lastStock = getSkuStock(collectVo.getListId(), skuId);
int restStock = decrSkuStock(collectVo.getListId(), skuId, lastStock);
if (restStock < 0) {
//库存超过销售量 操作失败回滚库存
incrSkuStock(collectVo.getListId(), skuId, lastStock);
} else {
//上个时间段的库存增加到当前时间段
incrSkuStock(vo.getListId(), skuId, lastStock);
}
} }
} }
} }
......
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