1. 商品信息变动刷新库存

2. 商品信息变动发生Mq消息
This commit is contained in:
Tankaikai
2025-03-04 15:47:47 +08:00
parent e4648b1e56
commit 6197ba5707
3 changed files with 25 additions and 13 deletions

View File

@@ -31,8 +31,9 @@ public interface ProductRpcService {
/** /**
* 订单退菜或退款后回退库存 * 订单退菜或退款后回退库存
* * @param shopId 店铺id
* @param orderId 订单ID
* @param dataList 库存恢复数据 * @param dataList 库存恢复数据
*/ */
void orderRefundReturnStock(List<Map<String, Object>> dataList); void orderRefundReturnStock(Long shopId, Long orderId, List<Map<String, Object>> dataList);
} }

View File

@@ -182,15 +182,28 @@ public class OrderInfoRpcServiceImpl implements OrderInfoRpcService {
@Override @Override
public void orderRefundCallback(JSONObject data) { public void orderRefundCallback(JSONObject data) {
Set<String> keys = data.keySet(); Long orderId = data.getLong("orderId");
// 订单取消后商品库存恢复,耗材恢复,流水记录
OrderInfo orderInfo = orderInfoMapper.selectOneById(orderId);
if (orderInfo == null) {
throw new CzgException("订单不存在");
}
// 查询订单下商品
List<OrderDetail> detailList = orderDetailMapper.selectListByQuery(QueryWrapper.create().eq(OrderDetail::getOrderId, orderId));
if (CollUtil.isEmpty(detailList)) {
throw new CzgException("该订单下不存在商品");
}
JSONObject obj = data.getJSONObject("returnProMap");
Set<String> keys = obj.keySet();
// 封装扣减库存数据 // 封装扣减库存数据
List<Map<String, Object>> dataList = new ArrayList<>(); List<Map<String, Object>> dataList = new ArrayList<>();
for (String key : keys) { for (String key : keys) {
Long productId = Convert.toLong(key); Long productId = Convert.toLong(key);
BigDecimal num = data.getBigDecimal(key); BigDecimal num = obj.getBigDecimal(key);
Map<String, Object> row = new HashMap<>(2); Map<String, Object> row = new HashMap<>(3);
data.put("productId", productId); row.put("shopId", orderInfo.getShopId());
data.put("num", num); row.put("productId", productId);
row.put("num", num);
dataList.add(row); dataList.add(row);
} }
try { try {

View File

@@ -165,12 +165,11 @@ public class ProductRpcServiceImpl implements ProductRpcService {
} }
@Override @Override
public void orderRefundReturnStock(List<Map<String, Object>> dataList) { public void orderRefundReturnStock(Long shopId, Long orderId, List<Map<String, Object>> dataList) {
List<ProductStockSubtractDTO> list = BeanUtil.copyToList(dataList, ProductStockSubtractDTO.class); List<ProductStockSubtractDTO> list = BeanUtil.copyToList(dataList, ProductStockSubtractDTO.class);
if (CollUtil.isEmpty(list)) { if (CollUtil.isEmpty(list)) {
return; return;
} }
Long shopId = null;
for (ProductStockSubtractDTO dto : list) { for (ProductStockSubtractDTO dto : list) {
productMapper.updateProductStockNum(dto.getProductId(), dto.getShopId(), "add", dto.getNum()); productMapper.updateProductStockNum(dto.getProductId(), dto.getShopId(), "add", dto.getNum());
// 查询商品绑定耗材信息 // 查询商品绑定耗材信息
@@ -198,7 +197,7 @@ public class ProductRpcServiceImpl implements ProductRpcService {
consInfoMapper.update(consInfo); consInfoMapper.update(consInfo);
// 插入耗材流水记录 // 插入耗材流水记录
ConsStockFlow consStockFlow = new ConsStockFlow(); ConsStockFlow consStockFlow = new ConsStockFlow();
consStockFlow.setShopId(consInfo.getShopId()); consStockFlow.setShopId(shopId);
consStockFlow.setInOutType(InOutTypeEnum.IN.value()); consStockFlow.setInOutType(InOutTypeEnum.IN.value());
consStockFlow.setInOutItem(InOutItemEnum.ORDER_IN.value()); consStockFlow.setInOutItem(InOutItemEnum.ORDER_IN.value());
consStockFlow.setInOutDate(LocalDate.now()); consStockFlow.setInOutDate(LocalDate.now());
@@ -211,9 +210,8 @@ public class ProductRpcServiceImpl implements ProductRpcService {
consStockFlow.setSubTotal(NumberUtil.mul(surplusStock, consInfo.getPrice())); consStockFlow.setSubTotal(NumberUtil.mul(surplusStock, consInfo.getPrice()));
consStockFlow.setProductId(dto.getProductId()); consStockFlow.setProductId(dto.getProductId());
// consStockFlow.setSkuId(0L); // consStockFlow.setSkuId(0L);
// TODO 需要订单id consStockFlow.setOrderId(orderId);
// consStockFlow.setOrderId(orderId); consStockFlow.setRemark("订单退款退菜归还库存");
shopId = consInfo.getShopId();
consStockFlowMapper.insert(consStockFlow); consStockFlowMapper.insert(consStockFlow);
} }
} }