Ver código fonte

fix: ORDER回调saveOrderGoods先清除ORC_RESULT占位商品再写入真实价格

- 防止 ORC_RESULT 先写入零售价占位 + ORDER回调再次写入导致重复
- ORDER回调到达时先删旧记录再写真实成交价

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
skyline 2 semanas atrás
pai
commit
5699a33c9f

+ 11 - 0
haha-service/src/main/java/com/haha/service/impl/HahaCallbackServiceImpl.java

@@ -934,6 +934,17 @@ public class HahaCallbackServiceImpl implements HahaCallbackService {
                 return;
             }
 
+            // 如果 ORC_RESULT 已写入占位商品记录,先删除再以回调数据重写
+            Long existingCount = orderGoodsMapper.selectCount(
+                    new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<OrderGoods>()
+                            .eq(OrderGoods::getOrderId, orderId));
+            if (existingCount != null && existingCount > 0) {
+                log.info("订单已有 {} 条商品记录,先清除再以回调数据重写 - orderId: {}", existingCount, orderId);
+                orderGoodsMapper.delete(
+                        new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<OrderGoods>()
+                                .eq(OrderGoods::getOrderId, orderId));
+            }
+
             for (int i = 0; i < goodsArray.size(); i++) {
                 JSONObject goodsJson = goodsArray.getJSONObject(i);
                 OrderGoods goods = new OrderGoods();