增加商品库存redis缓存 & 库存变动发送rabbit消息

This commit is contained in:
Tankaikai 2025-04-16 17:23:15 +08:00
parent b320bb757d
commit ea94fae9de
1 changed files with 21 additions and 3 deletions

View File

@ -68,6 +68,7 @@ public class ProductRpcServiceImpl implements ProductRpcService {
if (CollUtil.isEmpty(list)) {
return;
}
boolean isHasStockChangeToZero = false;
for (ProductStockSubtractDTO dto : list) {
Product product = productMapper.selectOneById(dto.getProductId());
if (product == null) {
@ -88,6 +89,9 @@ public class ProductRpcServiceImpl implements ProductRpcService {
flow.setInOutItem(InOutItemEnum.ORDER_OUT.value());
flow.setOrderId(orderId);
productStockFlowService.saveFlow(flow);
if (!isHasStockChangeToZero && NumberUtil.isLessOrEqual(flow.getAfterNumber(), BigDecimal.ZERO)) {
isHasStockChangeToZero = true;
}
// 查询商品绑定耗材信息
List<ProdConsRelation> relationList = prodConsRelationMapper.selectListByQuery(QueryWrapper.create().eq(ProdConsRelation::getProductId, dto.getProductId()));
if (CollUtil.isEmpty(relationList)) {
@ -131,7 +135,9 @@ public class ProductRpcServiceImpl implements ProductRpcService {
consStockFlowService.saveFlow(consStockFlow);
}
}
ThreadUtil.execAsync(() -> rabbitPublisher.sendProductInfoChangeMsg(Convert.toStr(shopId)));
if (isHasStockChangeToZero) {
ThreadUtil.execAsync(() -> rabbitPublisher.sendProductInfoChangeMsg(Convert.toStr(shopId)));
}
log.info("ProductService.--------------------------------------------库存更新成功");
}
@ -143,6 +149,7 @@ public class ProductRpcServiceImpl implements ProductRpcService {
if (CollUtil.isEmpty(list)) {
return;
}
boolean isHasStockChangeToZero = false;
for (ProductStockSubtractDTO dto : list) {
Product product = productMapper.selectOneById(dto.getProductId());
productMapper.updateProductStockNum(dto.getProductId(), dto.getShopId(), "add", dto.getNum());
@ -161,6 +168,9 @@ public class ProductRpcServiceImpl implements ProductRpcService {
flow.setRemark("红冲订单取消/退菜/退单消耗的库存");
flow.setOrderId(orderId);
productStockFlowService.saveFlow(flow);
if (!isHasStockChangeToZero && NumberUtil.isLessOrEqual(flow.getAfterNumber(), BigDecimal.ZERO)) {
isHasStockChangeToZero = true;
}
// 查询商品绑定耗材信息
List<ProdConsRelation> relationList = prodConsRelationMapper.selectListByQuery(QueryWrapper.create().eq(ProdConsRelation::getProductId, dto.getProductId()));
if (CollUtil.isEmpty(relationList)) {
@ -204,7 +214,9 @@ public class ProductRpcServiceImpl implements ProductRpcService {
consStockFlowService.saveFlow(consStockFlow);
}
}
ThreadUtil.execAsync(() -> rabbitPublisher.sendProductInfoChangeMsg(Convert.toStr(shopId)));
if (isHasStockChangeToZero) {
ThreadUtil.execAsync(() -> rabbitPublisher.sendProductInfoChangeMsg(Convert.toStr(shopId)));
}
log.info("ProductService.--------------------------------------------库存更新成功");
}
@ -215,6 +227,7 @@ public class ProductRpcServiceImpl implements ProductRpcService {
if (CollUtil.isEmpty(list)) {
return;
}
boolean isHasStockChangeToZero = false;
for (ProductStockSubtractDTO dto : list) {
Product product = productMapper.selectOneById(dto.getProductId());
// 商品是否允许退款退货时归还库存
@ -237,6 +250,9 @@ public class ProductRpcServiceImpl implements ProductRpcService {
flow.setRemark("红冲订单取消/退菜/退单消耗的库存");
flow.setOrderId(orderId);
productStockFlowService.saveFlow(flow);
if (!isHasStockChangeToZero && NumberUtil.isLessOrEqual(flow.getAfterNumber(), BigDecimal.ZERO)) {
isHasStockChangeToZero = true;
}
// 查询商品绑定耗材信息
List<ProdConsRelation> relationList = prodConsRelationMapper.selectListByQuery(QueryWrapper.create().eq(ProdConsRelation::getProductId, dto.getProductId()));
if (CollUtil.isEmpty(relationList)) {
@ -280,7 +296,9 @@ public class ProductRpcServiceImpl implements ProductRpcService {
consStockFlowService.saveFlow(consStockFlow);
}
}
ThreadUtil.execAsync(() -> rabbitPublisher.sendProductInfoChangeMsg(Convert.toStr(shopId)));
if (isHasStockChangeToZero) {
ThreadUtil.execAsync(() -> rabbitPublisher.sendProductInfoChangeMsg(Convert.toStr(shopId)));
}
log.info("ProductService.--------------------------------------------库存更新成功");
}