commit
40d40a344e
@ -25,6 +25,11 @@ public enum PromotionTypeEnum {
|
||||
*/
|
||||
public static final PromotionTypeEnum[] haveStockPromotion = new PromotionTypeEnum[]{PINTUAN, SECKILL, KANJIA, POINTS_GOODS};
|
||||
|
||||
/**
|
||||
* 有独立促销库存的活动类型
|
||||
*/
|
||||
public static final PromotionTypeEnum[] haveIndependanceStockPromotion = new PromotionTypeEnum[]{SECKILL};
|
||||
|
||||
private final String description;
|
||||
|
||||
PromotionTypeEnum(String description) {
|
||||
|
@ -271,6 +271,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
||||
queryWrapper.eq(Order::getPromotionId, pintuanId);
|
||||
queryWrapper.nested(i -> i.eq(Order::getPayStatus, PayStatusEnum.PAID.name()).or(j -> j.eq(Order::getOrderStatus,
|
||||
OrderStatusEnum.PAID.name())));
|
||||
queryWrapper.ne(Order::getOrderStatus, OrderStatusEnum.CANCELLED.name());
|
||||
return this.list(queryWrapper);
|
||||
}
|
||||
|
||||
@ -302,7 +303,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
||||
Order order = OperationalJudgment.judgment(this.getBySn(orderSn));
|
||||
//如果订单促销类型不为空&&订单是拼团订单,并且订单未成团,则抛出异常
|
||||
if (OrderPromotionTypeEnum.PINTUAN.name().equals(order.getOrderPromotionType())
|
||||
&& !CharSequenceUtil.equalsAny(order.getOrderStatus(), OrderStatusEnum.UNDELIVERED.name(), OrderStatusEnum.STAY_PICKED_UP.name())) {
|
||||
&& !CharSequenceUtil.equalsAny(order.getOrderStatus(), OrderStatusEnum.TAKE.name(), OrderStatusEnum.UNDELIVERED.name(), OrderStatusEnum.STAY_PICKED_UP.name())) {
|
||||
throw new ServiceException(ResultCode.ORDER_CAN_NOT_CANCEL);
|
||||
}
|
||||
if (CharSequenceUtil.equalsAny(order.getOrderStatus(),
|
||||
@ -1011,6 +1012,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
|
||||
//拼团sn=开团订单sn 或者 参团订单的开团订单sn
|
||||
queryWrapper.and(i -> i.eq(Order::getSn, parentOrderSn)
|
||||
.or(j -> j.eq(Order::getParentOrderSn, parentOrderSn)));
|
||||
queryWrapper.ne(Order::getOrderStatus, OrderStatusEnum.CANCELLED.name());
|
||||
//参团后的订单数(人数)
|
||||
return this.list(queryWrapper);
|
||||
}
|
||||
|
@ -195,10 +195,10 @@ public class PromotionGoodsServiceImpl extends ServiceImpl<PromotionGoodsMapper,
|
||||
@Override
|
||||
public Integer getPromotionGoodsStock(PromotionTypeEnum typeEnum, String promotionId, String skuId) {
|
||||
String promotionStockKey = PromotionGoodsService.getPromotionGoodsStockCacheKey(typeEnum, promotionId, skuId);
|
||||
String promotionGoodsStock = stringRedisTemplate.opsForValue().get(promotionStockKey);
|
||||
Object promotionGoodsStock = cache.get(promotionStockKey);
|
||||
|
||||
//库存如果不为空,则直接返回
|
||||
if (promotionGoodsStock != null && CharSequenceUtil.isNotEmpty(promotionGoodsStock)) {
|
||||
if (promotionGoodsStock != null) {
|
||||
return Convert.toInt(promotionGoodsStock);
|
||||
}
|
||||
//如果为空
|
||||
@ -213,7 +213,7 @@ public class PromotionGoodsServiceImpl extends ServiceImpl<PromotionGoodsMapper,
|
||||
return 0;
|
||||
}
|
||||
//否则写入新的促销商品库存
|
||||
stringRedisTemplate.opsForValue().set(promotionStockKey, promotionGoods.getQuantity().toString());
|
||||
cache.put(promotionStockKey, promotionGoods.getQuantity());
|
||||
return promotionGoods.getQuantity();
|
||||
}
|
||||
}
|
||||
@ -269,7 +269,7 @@ public class PromotionGoodsServiceImpl extends ServiceImpl<PromotionGoodsMapper,
|
||||
updateWrapper.set(PromotionGoods::getQuantity, promotionGoods.getQuantity()).set(PromotionGoods::getNum, promotionGoods.getNum());
|
||||
|
||||
this.update(updateWrapper);
|
||||
stringRedisTemplate.opsForValue().set(promotionStockKey, promotionGoods.getQuantity().toString());
|
||||
cache.put(promotionStockKey, promotionGoods.getQuantity());
|
||||
}
|
||||
}
|
||||
|
||||
@ -277,12 +277,14 @@ public class PromotionGoodsServiceImpl extends ServiceImpl<PromotionGoodsMapper,
|
||||
@SystemLogPoint(description = "更新促销活动商品库存", customerLog = "'操作的skuId:['+#skuId+'],修改后的库存:['+#quantity+']'")
|
||||
public void updatePromotionGoodsStock(String skuId, Integer quantity) {
|
||||
LambdaQueryWrapper<PromotionGoods> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.notIn(PromotionGoods::getPromotionType, Arrays.stream(PromotionTypeEnum.haveIndependanceStockPromotion).map(Enum::name).collect(Collectors.toList()));
|
||||
queryWrapper.eq(PromotionGoods::getSkuId, skuId);
|
||||
this.list(queryWrapper).forEach(promotionGoods -> {
|
||||
String promotionStockKey = PromotionGoodsService.getPromotionGoodsStockCacheKey(PromotionTypeEnum.valueOf(promotionGoods.getPromotionType()), promotionGoods.getPromotionId(), promotionGoods.getSkuId());
|
||||
cache.remove(promotionStockKey);
|
||||
});
|
||||
LambdaUpdateWrapper<PromotionGoods> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
updateWrapper.notIn(PromotionGoods::getPromotionType, Arrays.stream(PromotionTypeEnum.haveIndependanceStockPromotion).map(Enum::name).collect(Collectors.toList()));
|
||||
updateWrapper.eq(PromotionGoods::getSkuId, skuId);
|
||||
updateWrapper.set(PromotionGoods::getQuantity, quantity);
|
||||
this.update(updateWrapper);
|
||||
|
@ -393,15 +393,6 @@ public class SeckillApplyServiceImpl extends ServiceImpl<SeckillApplyMapper, Sec
|
||||
goodsVO.setGoodsImage(goodsSku.getThumbnail());
|
||||
goodsVO.setGoodsId(goodsSku.getGoodsId());
|
||||
goodsVO.setGoodsName(goodsSku.getGoodsName());
|
||||
String promotionGoodsStockCacheKey = PromotionGoodsService.getPromotionGoodsStockCacheKey(
|
||||
PromotionTypeEnum.SECKILL,
|
||||
seckillId, seckillApply.getSkuId());
|
||||
Object quantity = cache.get(promotionGoodsStockCacheKey);
|
||||
if (quantity != null) {
|
||||
goodsVO.setQuantity((Integer) quantity);
|
||||
} else {
|
||||
cache.put(promotionGoodsStockCacheKey, seckillApply.getQuantity());
|
||||
}
|
||||
seckillGoodsVoS.add(goodsVO);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user