diff --git a/cash-common/cash-common-service/src/main/java/com/czg/product/service/ProductRpcService.java b/cash-common/cash-common-service/src/main/java/com/czg/product/service/ProductRpcService.java index 8449acfa..259aeef1 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/product/service/ProductRpcService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/product/service/ProductRpcService.java @@ -31,8 +31,9 @@ public interface ProductRpcService { /** * 订单退菜或退款后回退库存 - * + * @param shopId 店铺id + * @param orderId 订单ID * @param dataList 库存恢复数据 */ - void orderRefundReturnStock(List> dataList); + void orderRefundReturnStock(Long shopId, Long orderId, List> dataList); } diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoRpcServiceImpl.java b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoRpcServiceImpl.java index f0c2875a..a8d60168 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoRpcServiceImpl.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoRpcServiceImpl.java @@ -182,15 +182,28 @@ public class OrderInfoRpcServiceImpl implements OrderInfoRpcService { @Override public void orderRefundCallback(JSONObject data) { - Set keys = data.keySet(); + Long orderId = data.getLong("orderId"); + // 订单取消后商品库存恢复,耗材恢复,流水记录 + OrderInfo orderInfo = orderInfoMapper.selectOneById(orderId); + if (orderInfo == null) { + throw new CzgException("订单不存在"); + } + // 查询订单下商品 + List detailList = orderDetailMapper.selectListByQuery(QueryWrapper.create().eq(OrderDetail::getOrderId, orderId)); + if (CollUtil.isEmpty(detailList)) { + throw new CzgException("该订单下不存在商品"); + } + JSONObject obj = data.getJSONObject("returnProMap"); + Set keys = obj.keySet(); // 封装扣减库存数据 List> dataList = new ArrayList<>(); for (String key : keys) { Long productId = Convert.toLong(key); - BigDecimal num = data.getBigDecimal(key); - Map row = new HashMap<>(2); - data.put("productId", productId); - data.put("num", num); + BigDecimal num = obj.getBigDecimal(key); + Map row = new HashMap<>(3); + row.put("shopId", orderInfo.getShopId()); + row.put("productId", productId); + row.put("num", num); dataList.add(row); } try { diff --git a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProductRpcServiceImpl.java b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProductRpcServiceImpl.java index a3a51018..6e00dac7 100644 --- a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProductRpcServiceImpl.java +++ b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProductRpcServiceImpl.java @@ -165,12 +165,11 @@ public class ProductRpcServiceImpl implements ProductRpcService { } @Override - public void orderRefundReturnStock(List> dataList) { + public void orderRefundReturnStock(Long shopId, Long orderId, List> dataList) { List list = BeanUtil.copyToList(dataList, ProductStockSubtractDTO.class); if (CollUtil.isEmpty(list)) { return; } - Long shopId = null; for (ProductStockSubtractDTO dto : list) { productMapper.updateProductStockNum(dto.getProductId(), dto.getShopId(), "add", dto.getNum()); // 查询商品绑定耗材信息 @@ -198,7 +197,7 @@ public class ProductRpcServiceImpl implements ProductRpcService { consInfoMapper.update(consInfo); // 插入耗材流水记录 ConsStockFlow consStockFlow = new ConsStockFlow(); - consStockFlow.setShopId(consInfo.getShopId()); + consStockFlow.setShopId(shopId); consStockFlow.setInOutType(InOutTypeEnum.IN.value()); consStockFlow.setInOutItem(InOutItemEnum.ORDER_IN.value()); consStockFlow.setInOutDate(LocalDate.now()); @@ -211,9 +210,8 @@ public class ProductRpcServiceImpl implements ProductRpcService { consStockFlow.setSubTotal(NumberUtil.mul(surplusStock, consInfo.getPrice())); consStockFlow.setProductId(dto.getProductId()); // consStockFlow.setSkuId(0L); - // TODO 需要订单id - // consStockFlow.setOrderId(orderId); - shopId = consInfo.getShopId(); + consStockFlow.setOrderId(orderId); + consStockFlow.setRemark("订单退款退菜归还库存"); consStockFlowMapper.insert(consStockFlow); } }