From 3b7a9231094b0e625321f7f1a8e6279604f7b1f4 Mon Sep 17 00:00:00 2001 From: liyj <1617420630@qq.com> Date: Mon, 3 Nov 2025 15:44:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=8D=95=E4=BB=B7=E8=90=A5?= =?UTF-8?q?=E4=B8=9A=E5=91=98=E7=9B=B8=E5=85=B3=E5=AD=97=E6=AE=B5=EF=BC=8C?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E6=80=9D=E8=BF=85=E6=B5=81=E6=B0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/modules/sync/ProductQuantityConsumption.java | 4 ++++ .../suisung/mall/common/modules/sync/StoreDbConfig.java | 4 ++++ .../shop/sync/service/impl/SyncThirdDataServiceImpl.java | 9 ++++++--- sql/shop/dev/20251103_dml.sql | 3 +++ 4 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 sql/shop/dev/20251103_dml.sql diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/sync/ProductQuantityConsumption.java b/mall-common/src/main/java/com/suisung/mall/common/modules/sync/ProductQuantityConsumption.java index ddfdc6a7..108ca004 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/modules/sync/ProductQuantityConsumption.java +++ b/mall-common/src/main/java/com/suisung/mall/common/modules/sync/ProductQuantityConsumption.java @@ -28,6 +28,10 @@ public class ProductQuantityConsumption { @ApiModelProperty("商品编号") private String productNumber; + @TableField(value = "unit_price", updateStrategy = FieldStrategy.NOT_EMPTY) + @ApiModelProperty("商品单价") + private BigDecimal unitPrice; + @ApiModelProperty("数量(正数表示入库/增加,负数表示出库/减少)") @TableField(value = "quantity",updateStrategy = FieldStrategy.NOT_EMPTY) private BigDecimal quantity; diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/sync/StoreDbConfig.java b/mall-common/src/main/java/com/suisung/mall/common/modules/sync/StoreDbConfig.java index 7d136962..18923329 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/modules/sync/StoreDbConfig.java +++ b/mall-common/src/main/java/com/suisung/mall/common/modules/sync/StoreDbConfig.java @@ -126,4 +126,8 @@ public class StoreDbConfig implements Serializable { @TableField(value = "shop_gap_time",updateStrategy = FieldStrategy.NOT_EMPTY) @NotBlank(message = "商品同步间隔时间不能为空") private String shopGapTime; + + @TableField(value = "sale_account",updateStrategy = FieldStrategy.NOT_EMPTY) + @NotBlank(message = "营业员账号") + private String saleAccount; } \ No newline at end of file diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncThirdDataServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncThirdDataServiceImpl.java index aaf88e8f..e36e93ba 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncThirdDataServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/SyncThirdDataServiceImpl.java @@ -902,17 +902,19 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements ProductQuantityConsumption productQuantityConsumption=new ProductQuantityConsumption(); String productKey= (String) k; String[] productKeyArrys=productKey.split("-"); - if(productKeyArrys.length!=2){ + if(productKeyArrys.length!=3){ return; } String productNumber=productKeyArrys[0]; String orderId=productKeyArrys[1]; + String unitPrice=productKeyArrys[2]; productQuantityConsumption.setConsumeId(IdUtil.getSnowflakeNextIdStr()); productQuantityConsumption.setOrderId(orderId); productQuantityConsumption.setProductNumber(productNumber); productQuantityConsumption.setQuantity(Convert.toBigDecimal(v)); productQuantityConsumption.setStoreId(Integer.valueOf(storeId)); productQuantityConsumption.setStatus(0); + productQuantityConsumption.setUnitPrice(new BigDecimal(unitPrice)); productQuantityConsumptionList.add(productQuantityConsumption); }); return productQuantityConsumptionList; @@ -971,8 +973,9 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements cn.hutool.json.JSONArray array_item_spec= JSONUtil.parseArray(spuItem.getItem_spec()); logger.info("array_item_spec:{}",array_item_spec); logger.info("key:{},Product_number:{}",key,itemId); + String unitPrice= String.valueOf(spuItem.getItem_unit_price()); if(array_item_spec.isEmpty()){ - redisTemplate.opsForHash().increment(key, itemId+"-"+orderId, delta.doubleValue()); + redisTemplate.opsForHash().increment(key, itemId+"-"+orderId+"-"+unitPrice, delta.doubleValue()); logger.info("存储无规格库存成功"); continue; } @@ -980,7 +983,7 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements String name = Convert.toStr(item.get("name")); BigDecimal itemQuaryty = getBigDecimal(delta, name); // 使用 Redis 的 HINCRBY 保证原子性和高性能 - redisTemplate.opsForHash().increment(key, itemId+"-"+orderId, itemQuaryty.doubleValue()); + redisTemplate.opsForHash().increment(key, itemId+"-"+orderId+"-"+unitPrice, itemQuaryty.doubleValue()); logger.info("存储有规格库存成功"); } catch (Exception e) { logger.error("库存累计失败,productKey={}, delta={}, error={}", productKey, delta, e.getMessage(), e); diff --git a/sql/shop/dev/20251103_dml.sql b/sql/shop/dev/20251103_dml.sql new file mode 100644 index 00000000..8c2a29c7 --- /dev/null +++ b/sql/shop/dev/20251103_dml.sql @@ -0,0 +1,3 @@ +alter table product_quantity_consumption add column unit_price decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '商品单价'; + +ALTER table store_db_config add column `sale_account` varchar(8) NOT NULL default '8080' COMMENT '营业员账号'; \ No newline at end of file