From d2791afab2a1303ff8f3a35bde66d071b4464bdc Mon Sep 17 00:00:00 2001
From: liyj <1617420630@qq.com>
Date: Tue, 10 Jun 2025 16:59:26 +0800
Subject: [PATCH] =?UTF-8?q?=E5=95=86=E5=93=81=E5=90=8C=E6=AD=A5=E6=96=B0?=
=?UTF-8?q?=E5=A2=9E=E6=98=A0=E5=B0=84=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../mobile/SinglePushController.java | 4 +-
.../suisung/mall/common/api/StateCode.java | 2 +
.../suisung/mall/common/enums/DicEnum.java | 2 +
.../modules/base/ShopBaseProductSpec.java | 11 +
.../modules/base/ShopBaseProductType.java | 15 +
.../modules/product/ShopProductBase.java | 22 +-
.../modules/product/ShopProductComment.java | 2 +-
.../modules/product/ShopProductInfo.java | 23 +
.../modules/product/ShopProductItem.java | 31 +-
.../modules/product/ShopProductItemSeq.java | 1 +
.../modules/product/ShopProductSpecItem.java | 21 +
.../common/modules/sync/ProductMapping.java | 68 ++
.../admin/ShopBaseProductSpecController.java | 16 +-
.../service/ShopBaseProductSpecService.java | 5 +
.../impl/ShopBaseProductSpecServiceImpl.java | 45 +-
.../impl/ShopBaseProductTypeServiceImpl.java | 4 +-
.../number/service/ShopNumberSeqService.java | 5 +
.../impl/ShopNumberSeqServiceImpl.java | 50 +-
.../admin/ShopProductSpecItemController.java | 6 +-
.../service/ShopProductSpecItemService.java | 5 +
.../impl/ShopProductBaseServiceImpl.java | 201 +++--
.../impl/ShopProductSpecItemServiceImpl.java | 38 +
.../shop/sync/Utils/BigDecimalFormatter.java | 29 +
.../sync/Utils/ProductPriceCalculator.java | 94 +++
.../mall/shop/sync/Utils/ShopJsonUtils.java | 87 +++
.../sync/controller/ClientController.java | 2 +-
.../controller/ProductMappingController.java | 220 ++++++
.../controller/StoreDbConfigController.java | 13 +-
.../controller/SyncThirdDataController.java | 8 +-
.../sync/excleHandle/ExportStyleHandler.java | 39 +
.../excleHandle/TemplateStyleHandler.java | 33 +
.../shop/sync/exelModel/ImportResult.java | 20 +
.../sync/exelModel/ProductMappingExcel.java | 63 ++
.../mall/shop/sync/keymanage/RedisKey.java | 10 +
.../sync/mapper/ProductMappingMapper.java | 17 +
.../sync/service/ProductMappingService.java | 39 +
.../impl/ProductMappingServiceImpl.java | 699 ++++++++++++++++++
.../impl/StoreDbConfigServiceImpl.java | 13 +-
.../service/impl/SyncBaseThirdSxAbstract.java | 191 ++++-
.../impl/SyncThirdDataServiceImpl.java | 11 +-
mall-shop/src/main/resources/bootstrap.yml | 4 +-
sql/shop/dev/20250602_ddl.sql | 25 +
42 files changed, 2044 insertions(+), 150 deletions(-)
create mode 100644 mall-common/src/main/java/com/suisung/mall/common/modules/sync/ProductMapping.java
create mode 100644 mall-shop/src/main/java/com/suisung/mall/shop/sync/Utils/BigDecimalFormatter.java
create mode 100644 mall-shop/src/main/java/com/suisung/mall/shop/sync/Utils/ProductPriceCalculator.java
create mode 100644 mall-shop/src/main/java/com/suisung/mall/shop/sync/Utils/ShopJsonUtils.java
create mode 100644 mall-shop/src/main/java/com/suisung/mall/shop/sync/controller/ProductMappingController.java
create mode 100644 mall-shop/src/main/java/com/suisung/mall/shop/sync/excleHandle/ExportStyleHandler.java
create mode 100644 mall-shop/src/main/java/com/suisung/mall/shop/sync/excleHandle/TemplateStyleHandler.java
create mode 100644 mall-shop/src/main/java/com/suisung/mall/shop/sync/exelModel/ImportResult.java
create mode 100644 mall-shop/src/main/java/com/suisung/mall/shop/sync/exelModel/ProductMappingExcel.java
create mode 100644 mall-shop/src/main/java/com/suisung/mall/shop/sync/mapper/ProductMappingMapper.java
create mode 100644 mall-shop/src/main/java/com/suisung/mall/shop/sync/service/ProductMappingService.java
create mode 100644 mall-shop/src/main/java/com/suisung/mall/shop/sync/service/impl/ProductMappingServiceImpl.java
create mode 100644 sql/shop/dev/20250602_ddl.sql
diff --git a/mall-account/src/main/java/com/suisung/mall/account/controller/mobile/SinglePushController.java b/mall-account/src/main/java/com/suisung/mall/account/controller/mobile/SinglePushController.java
index 52b458d9..117f3677 100644
--- a/mall-account/src/main/java/com/suisung/mall/account/controller/mobile/SinglePushController.java
+++ b/mall-account/src/main/java/com/suisung/mall/account/controller/mobile/SinglePushController.java
@@ -33,8 +33,8 @@ public class SinglePushController {
return "success";
}
- @PostMapping("/pushTocid")
- public CommonResult pushTocid(@RequestParam String userId, @RequestParam String message) {
+ @PostMapping("/pushTo")
+ public CommonResult pushTo(@RequestParam String userId, @RequestParam String message) {
log.info("pushTocid");
return accountSinglePushService.pushTocid(message, userId);
}
diff --git a/mall-common/src/main/java/com/suisung/mall/common/api/StateCode.java b/mall-common/src/main/java/com/suisung/mall/common/api/StateCode.java
index 0ce63060..eb68092b 100644
--- a/mall-common/src/main/java/com/suisung/mall/common/api/StateCode.java
+++ b/mall-common/src/main/java/com/suisung/mall/common/api/StateCode.java
@@ -42,6 +42,8 @@ public class StateCode {
public static final int PRODUCT_STATE_NORMAL = 1001; //正常
public static final int PRODUCT_STATE_OFF_THE_SHELF = 1002; //下架
+ public static final int PRODUCT_STATE_OFF_THE_SHELF_UNCHECK = 1003; //同步数据的状态,下架未分配商品
+
public static final int DEMAND_STATE_CONDUCT = 1000; //采购中
public static final int DEMAND_STATE_REJECT = 1030; //被驳回
public static final int DEMAND_STATE_EXAMINE = 1040; //审核中
diff --git a/mall-common/src/main/java/com/suisung/mall/common/enums/DicEnum.java b/mall-common/src/main/java/com/suisung/mall/common/enums/DicEnum.java
index 4629dd01..3030fec1 100644
--- a/mall-common/src/main/java/com/suisung/mall/common/enums/DicEnum.java
+++ b/mall-common/src/main/java/com/suisung/mall/common/enums/DicEnum.java
@@ -26,6 +26,8 @@ public enum DicEnum {
YESORNO_0("0", "否","yesOrno","是否","是否"),
YESORNO_1("1", "是","yesOrno","是否","是否"),
+
+ GOODS_UN_SYNC_SX("1", "白条猪","unSyncGoodsSX","思迅非同步商品","白条猪"),
;
;
private String code;
diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/base/ShopBaseProductSpec.java b/mall-common/src/main/java/com/suisung/mall/common/modules/base/ShopBaseProductSpec.java
index 1d7a887b..c7d0cbe3 100644
--- a/mall-common/src/main/java/com/suisung/mall/common/modules/base/ShopBaseProductSpec.java
+++ b/mall-common/src/main/java/com/suisung/mall/common/modules/base/ShopBaseProductSpec.java
@@ -14,6 +14,8 @@ import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.List;
+import static com.baomidou.mybatisplus.annotation.FieldStrategy.NOT_EMPTY;
+
/**
*
* 商品规格表
@@ -36,24 +38,33 @@ public class ShopBaseProductSpec implements Serializable {
private Integer spec_id;
@ApiModelProperty(value = "规格类别名称")
+ @TableField(updateStrategy=NOT_EMPTY)
private String spec_name;
@ApiModelProperty(value = "规格类别注释")
+ @TableField(updateStrategy=NOT_EMPTY)
private String spec_remark;
@ApiModelProperty(value = "显示类型(ENUM): text-文字; image-图片")
+ @TableField(updateStrategy=NOT_EMPTY)
private String spec_format;
@ApiModelProperty(value = "排序")
+ @TableField(updateStrategy=NOT_EMPTY)
private Integer spec_order;
@ApiModelProperty(value = "规格分类编号:不是商品类型编号,选择分类,可关联到任意级分类。(可以使用一级分类category_id,只在后台快捷定位中起作用) - 不用新建分类表管理。")
+ @TableField(updateStrategy=NOT_EMPTY)
private Integer spec_category_id;
@ApiModelProperty(value = "系统内置(ENUM):1-是; 0-否 | 系统内置不可删除 默认安装中会添加一个默认颜色规格")
+ @TableField(updateStrategy=NOT_EMPTY)
private Integer spec_buildin;
@ApiModelProperty(value = "规格属性")
@TableField(exist = false)
private List specItems;
+
+ @ApiModelProperty(value = "所属店铺")
+ private Integer store_id;
}
diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/base/ShopBaseProductType.java b/mall-common/src/main/java/com/suisung/mall/common/modules/base/ShopBaseProductType.java
index df576401..033c85aa 100644
--- a/mall-common/src/main/java/com/suisung/mall/common/modules/base/ShopBaseProductType.java
+++ b/mall-common/src/main/java/com/suisung/mall/common/modules/base/ShopBaseProductType.java
@@ -1,6 +1,7 @@
package com.suisung.mall.common.modules.base;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
@@ -11,6 +12,8 @@ import lombok.experimental.Accessors;
import java.io.Serializable;
+import static com.baomidou.mybatisplus.annotation.FieldStrategy.NOT_EMPTY;
+
/**
*
* 商品类型表-强调共性,类别cat是强调区别.
@@ -33,39 +36,51 @@ public class ShopBaseProductType implements Serializable {
private Integer type_id;
@ApiModelProperty(value = "类型名称")
+ @TableField(updateStrategy=NOT_EMPTY)
private String type_name;
@ApiModelProperty(value = "备注")
+ @TableField(updateStrategy=NOT_EMPTY)
private String type_remark;
@ApiModelProperty(value = "是否启用辅助属性(ENUM):1-是; 0-否")
+ @TableField(updateStrategy=NOT_EMPTY)
private Integer type_is_assist;
@ApiModelProperty(value = "是否启用参数(ENUM):1-是; 0-否")
+ @TableField(updateStrategy=NOT_EMPTY)
private Integer type_is_param;
@ApiModelProperty(value = "是否启用品牌(ENUM):1-是; 0-否")
+ @TableField(updateStrategy=NOT_EMPTY)
private Integer type_is_brand;
@ApiModelProperty(value = "是否启用实体商品(ENUM):1-是; 0-否")
+ @TableField(updateStrategy=NOT_EMPTY)
private Integer type_is_entity;
@ApiModelProperty(value = "分类编号-可关联到任意级分类。(可以使用一级分类category_id,只在后台快捷定位中起作用) - 要取消快捷定位功能,通过UI交互来更好实现")
+ @TableField(updateStrategy=NOT_EMPTY)
private Integer type_category_id;
@ApiModelProperty(value = "是否草稿(ENUM):1-草稿;0-发布")
+ @TableField(updateStrategy=NOT_EMPTY)
private Integer type_is_draft;
@ApiModelProperty(value = "规格id(DOT)")
+ @TableField(updateStrategy=NOT_EMPTY)
private String type_spec_ids;
@ApiModelProperty(value = "品牌编号")
+ @TableField(updateStrategy=NOT_EMPTY)
private String type_brand_ids;
@ApiModelProperty(value = "辅助属性(DOT)")
+ @TableField(updateStrategy=NOT_EMPTY)
private String type_assist_ids;
@ApiModelProperty(value = "系统内置(ENUM):1-内置; 0-非内置")
+ @TableField(updateStrategy=NOT_EMPTY)
private Integer type_buildin;
}
diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductBase.java b/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductBase.java
index 6e34ba2a..92ecc307 100644
--- a/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductBase.java
+++ b/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductBase.java
@@ -15,6 +15,8 @@ import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
+import static com.baomidou.mybatisplus.annotation.FieldStrategy.NOT_EMPTY;
+
/**
*
* 商品基础表-SPU表
@@ -28,7 +30,7 @@ import java.util.List;
@Accessors(chain = true)
@TableName("shop_product_base")
@ApiModel(value = "ShopProductBase对象", description = "商品基础表-SPU表")
-public class ShopProductBase implements Serializable {
+public class ShopProductBase implements Serializable{
private static final long serialVersionUID = 1L;
@@ -76,9 +78,11 @@ public class ShopProductBase implements Serializable {
private Integer layout_route_id;
@ApiModelProperty(value = "商品审核(ENUM):3001-审核通过;3002-审核中;3000-审核未通过")
+ @TableField(updateStrategy=NOT_EMPTY)
private Integer product_verify_id;
@ApiModelProperty(value = "商品状态(LIST):1001-正常;1002-下架仓库中;1000-违规禁售")
+ @TableField(updateStrategy=NOT_EMPTY)
private Integer product_state_id;
@ApiModelProperty(value = "库存锁定(ENUM):1001-下单锁定;1002-支付锁定;")
@@ -130,5 +134,21 @@ public class ShopProductBase implements Serializable {
@TableField(exist = false)
private List productItems;
+ //在同步数据的时候,生鲜需要按平台的规格拆分售卖,这些主要记录原始数据,总重量一般为kg,KG,公斤
+ @ApiModelProperty(value = "总量单位")
+ private String unit_name;
+
+ @ApiModelProperty(value = "总重量")
+ @TableField(updateStrategy=NOT_EMPTY)
+ private BigDecimal shop_weight;
+
+ @ApiModelProperty(value = "单价")
+ @TableField(updateStrategy=NOT_EMPTY)
+ private BigDecimal unit_price;
+
+ @ApiModelProperty(value = "商品分类编号,通过type决定规格,但是分类下的规格值都不同")
+ @TableField(exist = false)
+ private Integer categoryId;
+
}
diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductComment.java b/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductComment.java
index 7fe36af3..129d9194 100644
--- a/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductComment.java
+++ b/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductComment.java
@@ -30,7 +30,7 @@ import java.util.Date;
@Accessors(chain = true)
@TableName("shop_product_comment")
@ApiModel(value = "ShopProductComment对象", description = "商品评价表")
-public class ShopProductComment implements Serializable {
+public class ShopProductComment implements Serializable{
private static final long serialVersionUID = 1L;
diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductInfo.java b/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductInfo.java
index 0b67bd3c..051a42f9 100644
--- a/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductInfo.java
+++ b/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductInfo.java
@@ -1,6 +1,7 @@
package com.suisung.mall.common.modules.product;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
@@ -12,6 +13,8 @@ import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
+import static com.baomidou.mybatisplus.annotation.FieldStrategy.NOT_EMPTY;
+
/**
*
* 商品信息表
@@ -34,54 +37,74 @@ public class ShopProductInfo implements Serializable {
private Long product_id;
@ApiModelProperty(value = "SPU商家编码:货号")
+ @TableField(updateStrategy=NOT_EMPTY)
private String product_number;
@ApiModelProperty(value = "商品条形码")
+ @TableField(updateStrategy=NOT_EMPTY)
private String product_barcode;
@ApiModelProperty(value = "商品型号")
+ @TableField(updateStrategy=NOT_EMPTY)
private String product_model;
@ApiModelProperty(value = "属性(JSON) - 辅助属性及VAL")
+ @TableField(updateStrategy=NOT_EMPTY)
private String product_assist;
@ApiModelProperty(value = "规格(JSON)-规格、规格值、goods_id")
+ @TableField(updateStrategy=NOT_EMPTY)
private String product_spec;
@ApiModelProperty(value = "规格类别编号")
+ @TableField(updateStrategy=NOT_EMPTY)
private String spec_ids;
@ApiModelProperty(value = "商品SKU(JSON):{'uniq_id':[item_id, price, url]}")
+ @TableField(updateStrategy=NOT_EMPTY)
private String product_uniqid;
@ApiModelProperty(value = "长度单位")
+ @TableField(updateStrategy=NOT_EMPTY)
private Integer unit_length_id;
@ApiModelProperty(value = "重量单位")
+ @TableField(updateStrategy=NOT_EMPTY)
private Integer unit_weight_id;
@ApiModelProperty(value = "商品重量")
+ @TableField(updateStrategy=NOT_EMPTY)
private BigDecimal product_weight;
@ApiModelProperty(value = "尺寸长 x 宽 x 高(DOT):商品体积")
private String product_cubage;
@ApiModelProperty(value = "扣减库存")
+ @TableField(updateStrategy=NOT_EMPTY)
private Integer product_subtract;
@ApiModelProperty(value = "计量单位")
+ @TableField(updateStrategy=NOT_EMPTY)
private Integer unit_type_id;
@ApiModelProperty(value = "商品税别:商品税率可以按照商品分类来设置")
+ @TableField(updateStrategy=NOT_EMPTY)
private Integer tax_class_id;
@ApiModelProperty(value = "每人限购")
+ @TableField(updateStrategy=NOT_EMPTY)
private Integer product_buy_limit;
@ApiModelProperty(value = "参加会员等级折扣")
+ @TableField(updateStrategy=NOT_EMPTY)
private Integer product_user_level_discount;
@ApiModelProperty(value = "参加店铺发放的会员卡折扣")
+ @TableField(updateStrategy=NOT_EMPTY)
private Integer product_shop_card_discount;
+// @ApiModelProperty(value = "产品名称")
+// @TableField(exist=false)
+// private String productName;
+
}
diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductItem.java b/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductItem.java
index c05e64c5..8397934c 100644
--- a/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductItem.java
+++ b/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductItem.java
@@ -1,9 +1,6 @@
package com.suisung.mall.common.modules.product;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.Version;
+import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -13,6 +10,8 @@ import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
+import static com.baomidou.mybatisplus.annotation.FieldStrategy.NOT_EMPTY;
+
/**
*
* 商品表-SKU表 商品名称(产品名称+颜色规格名称) =shop_product_item
@@ -47,27 +46,34 @@ public class ShopProductItem implements Serializable {
private Long color_id;
@ApiModelProperty(value = "是否为默认展示的商品-列表页展示,必须为item_enable")
+ @TableField(updateStrategy=NOT_EMPTY)
private Integer item_is_default;
@ApiModelProperty(value = "SKU商家编码:SKU商家编码为非必填项,若不填写,系统会自动生成一个SKU商家编码。")
+ @TableField(updateStrategy=NOT_EMPTY)
private String item_number;
@ApiModelProperty(value = "条形码")
+ @TableField(updateStrategy=NOT_EMPTY)
private String item_barcode;
@ApiModelProperty(value = "成本价")
+ @TableField(updateStrategy=NOT_EMPTY)
private BigDecimal item_cost_price;
@ApiModelProperty(value = "平台价")
+ @TableField(updateStrategy=NOT_EMPTY)
private BigDecimal item_platform_price;
@ApiModelProperty(value = "商品建议零售价")
private BigDecimal item_advice_price;
@ApiModelProperty(value = "商品价格")
+ @TableField(updateStrategy=NOT_EMPTY)
private BigDecimal item_unit_price;
@ApiModelProperty(value = "市场价")
+ @TableField(updateStrategy=NOT_EMPTY)
private BigDecimal item_market_price;
@ApiModelProperty(value = "积分价格")
@@ -77,24 +83,31 @@ public class ShopProductItem implements Serializable {
private BigDecimal item_unit_sp;
@ApiModelProperty(value = "商品库存")
+ @TableField(updateStrategy=NOT_EMPTY)
private Integer item_quantity;
@ApiModelProperty(value = "商品冻结库存")
+ @TableField(updateStrategy=NOT_EMPTY)
private Integer item_quantity_frozen;
@ApiModelProperty(value = "库存预警值")
+ @TableField(updateStrategy=NOT_EMPTY)
private Integer item_warn_quantity;
@ApiModelProperty(value = "商品规格序列化(JSON):{spec_id:spec_item_id, spec_id:spec_item_id, spec_id:spec_item_id}")
+ @TableField(updateStrategy=NOT_EMPTY)
private String item_spec;
@ApiModelProperty(value = "商品规格值编号")
+ @TableField(updateStrategy=NOT_EMPTY)
private String spec_item_ids;
@ApiModelProperty(value = "是否启用(LIST):1001-正常;1002-下架仓库中;1000-违规禁售")
+ @TableField(updateStrategy=NOT_EMPTY)
private Integer item_enable;
@ApiModelProperty(value = "被改动(BOOL):0-未改动;1-已改动分销使用")
+ @TableField(updateStrategy=NOT_EMPTY)
private Integer item_is_change;
@ApiModelProperty(value = "商品重量")
@@ -160,4 +173,14 @@ public class ShopProductItem implements Serializable {
@Version
@ApiModelProperty(value = "乐观锁")
private Integer version;
+
+// @ApiModelProperty(value = "产品名称")
+// @TableField(exist=false)
+// private String productName;
+
+// @ApiModelProperty(value = "商品SKU(JSON):{'uniq_id':[item_id, price, url]}")
+// @TableField(exist=false)
+// private String product_uniqid;
+
+
}
diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductItemSeq.java b/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductItemSeq.java
index c3936d1c..1ce79b39 100644
--- a/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductItemSeq.java
+++ b/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductItemSeq.java
@@ -1,6 +1,7 @@
package com.suisung.mall.common.modules.product;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductSpecItem.java b/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductSpecItem.java
index a81efcfd..7d5d02d0 100644
--- a/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductSpecItem.java
+++ b/mall-common/src/main/java/com/suisung/mall/common/modules/product/ShopProductSpecItem.java
@@ -1,6 +1,7 @@
package com.suisung.mall.common.modules.product;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
@@ -10,6 +11,7 @@ import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
+import java.math.BigDecimal;
/**
*
@@ -50,5 +52,24 @@ public class ShopProductSpecItem implements Serializable {
@ApiModelProperty(value = "是否启用(BOOL):0-不显示;1-显示")
private Integer spec_item_enable;
+ @ApiModelProperty(value = "切割后的价格")
+ @TableField(exist=false)
+ private BigDecimal itemPrice;
+
+ @ApiModelProperty(value = "切割后的库存")
+ @TableField(exist=false)
+ private BigDecimal itemQuantity;
+
+ @ApiModelProperty(value = "规格值")
+ @TableField(exist=false)
+ private String item_spec;
+
+ @ApiModelProperty(value = "规格值")
+ @TableField(exist=false)
+ private String product_spec;
+
+ @ApiModelProperty(value = "是否新增,批次使用")
+ @TableField(exist=false)
+ private boolean isUpdate;
}
diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/sync/ProductMapping.java b/mall-common/src/main/java/com/suisung/mall/common/modules/sync/ProductMapping.java
new file mode 100644
index 00000000..9786763f
--- /dev/null
+++ b/mall-common/src/main/java/com/suisung/mall/common/modules/sync/ProductMapping.java
@@ -0,0 +1,68 @@
+package com.suisung.mall.common.modules.sync;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+import static com.baomidou.mybatisplus.annotation.FieldStrategy.NOT_EMPTY;
+
+@Data
+@TableName("product_mapping")
+@ApiModel("商品映射实体")
+public class ProductMapping implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id",type = IdType.AUTO)
+ @ApiModelProperty("主键ID")
+ private Long id;
+
+ @TableField(value = "product_name",updateStrategy=NOT_EMPTY)
+ @NotEmpty(message="商品名称不能为空")
+ @ApiModelProperty("商品名称")
+ private String productName;
+
+ @TableField(value ="store_id",updateStrategy=NOT_EMPTY)
+ @ApiModelProperty(value = "店铺编号")
+ @NotNull(message="店铺编号不能为空")
+ private Integer storeId;
+
+ @TableField(value ="spec_value",updateStrategy=NOT_EMPTY)
+ @ApiModelProperty("规格数据")
+ @NotNull(message="规格数据不能为空")
+ private BigDecimal specValue;
+
+ @TableField(value ="spec_unit",updateStrategy=NOT_EMPTY)
+ @ApiModelProperty("规格单位")
+ @NotEmpty(message="规格单位不能为空")
+ private String specUnit;
+
+ @TableField(value ="description",updateStrategy=NOT_EMPTY)
+ @ApiModelProperty("商品描述")
+ private String description;
+
+ @TableField(value = "sort_order",updateStrategy=NOT_EMPTY)
+ @ApiModelProperty("排序值")
+ private Integer sortOrder;
+
+
+ /**
+ * 生成唯一键:productName + storeId + specValue + specUnit
+ */
+ public String getUniqueKey() {
+ return String.format("%s|%d|%s|%s",
+ productName,
+ storeId,
+ specValue.stripTrailingZeros().toPlainString(),
+ specUnit);
+ }
+}
diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/base/controller/admin/ShopBaseProductSpecController.java b/mall-shop/src/main/java/com/suisung/mall/shop/base/controller/admin/ShopBaseProductSpecController.java
index 7b0f371f..7a8ef9e0 100644
--- a/mall-shop/src/main/java/com/suisung/mall/shop/base/controller/admin/ShopBaseProductSpecController.java
+++ b/mall-shop/src/main/java/com/suisung/mall/shop/base/controller/admin/ShopBaseProductSpecController.java
@@ -4,10 +4,12 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.suisung.mall.common.api.CommonResult;
+import com.suisung.mall.common.domain.UserDto;
import com.suisung.mall.common.exception.ApiException;
import com.suisung.mall.common.modules.base.ShopBaseProductSpec;
import com.suisung.mall.common.modules.product.ShopProductSpecItem;
import com.suisung.mall.common.utils.CheckUtil;
+import com.suisung.mall.common.utils.ContextUtil;
import com.suisung.mall.common.utils.I18nUtil;
import com.suisung.mall.shop.base.service.ShopBaseProductSpecService;
import com.suisung.mall.shop.product.service.ShopProductSpecItemService;
@@ -54,6 +56,9 @@ public class ShopBaseProductSpecController {
@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
QueryWrapper queryWrapper = new QueryWrapper<>();
+ UserDto userDto= ContextUtil.getCurrentUser();
+ Integer storeId = Integer.valueOf(userDto.getStore_id());
+ queryWrapper.eq("store_id",storeId);
queryWrapper.orderByAsc("spec_id");
if (CheckUtil.isNotEmpty(shopBaseProductSpec.getSpec_name())) {
queryWrapper.like("spec_name", shopBaseProductSpec.getSpec_name());
@@ -74,7 +79,10 @@ public class ShopBaseProductSpecController {
@RequestParam(value = "spec_category_id", required = false) Integer spec_category_id,
@RequestParam(value = "spec_order") Integer spec_order,
@RequestParam(value = "spec_id", required = false) Integer spec_id) {
+ UserDto userDto= ContextUtil.getCurrentUser();
+ Integer storeId = Integer.valueOf(userDto.getStore_id());
ShopBaseProductSpec shopBaseProductSpec = new ShopBaseProductSpec();
+ shopBaseProductSpec.setStore_id(storeId);
shopBaseProductSpec.setSpec_id(spec_id);
shopBaseProductSpec.setSpec_name(spec_name);
shopBaseProductSpec.setSpec_format(spec_format);
@@ -92,19 +100,19 @@ public class ShopBaseProductSpecController {
@ApiOperation(value = "商品规格表-通过spec_id删除", notes = "商品规格表-通过spec_id删除")
@RequestMapping(value = "/delete", method = RequestMethod.POST)
public CommonResult delete(@RequestParam(name = "spec_ids") String spec_ids) {
- List specIds = Convert.toList(Integer.class, spec_ids);
- if (CollUtil.isEmpty(specIds)) {
+ List spes = Convert.toList(Integer.class, spec_ids);
+ if (CollUtil.isEmpty(spes)) {
throw new ApiException(I18nUtil._("商品规格编号异常!spec_id: ") + spec_ids);
}
QueryWrapper queryWrapper = new QueryWrapper<>();
- queryWrapper.in("spec_id", specIds);
+ queryWrapper.in("spec_id", spes);
List spec_item_ids = shopProductSpecItemService.findKey(queryWrapper);
if (CollUtil.isNotEmpty(spec_item_ids)) {
throw new ApiException(String.format(I18nUtil._("不能删除正在被商品规格值表使用的规格!商品规格值编号【%s】"), CollUtil.join(spec_item_ids, ",")));
}
- return CommonResult.success(shopBaseProductSpecService.remove(specIds));
+ return CommonResult.success(shopBaseProductSpecService.remove(spes));
}
@ApiOperation(value = "商品规格表-获取分类规格参数", notes = "商品规格表-获取分类规格参数")
diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/base/service/ShopBaseProductSpecService.java b/mall-shop/src/main/java/com/suisung/mall/shop/base/service/ShopBaseProductSpecService.java
index 54af80a7..bc8f7007 100644
--- a/mall-shop/src/main/java/com/suisung/mall/shop/base/service/ShopBaseProductSpecService.java
+++ b/mall-shop/src/main/java/com/suisung/mall/shop/base/service/ShopBaseProductSpecService.java
@@ -19,4 +19,9 @@ public interface ShopBaseProductSpecService extends IBaseService> specMap();
List getSpecsByIds(String type_spec_ids, Integer store_id);
+
+
+ Map getShopBaseProductSpecMap(Integer store_id);
+
+ void clearShopBaseProductSpecMap(Integer store_id);
}
diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/base/service/impl/ShopBaseProductSpecServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/base/service/impl/ShopBaseProductSpecServiceImpl.java
index 74544565..86763d60 100644
--- a/mall-shop/src/main/java/com/suisung/mall/shop/base/service/impl/ShopBaseProductSpecServiceImpl.java
+++ b/mall-shop/src/main/java/com/suisung/mall/shop/base/service/impl/ShopBaseProductSpecServiceImpl.java
@@ -1,23 +1,25 @@
package com.suisung.mall.shop.base.service.impl;
+import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.suisung.mall.common.domain.UserDto;
import com.suisung.mall.common.modules.base.ShopBaseProductCategory;
import com.suisung.mall.common.modules.base.ShopBaseProductSpec;
import com.suisung.mall.common.modules.product.ShopProductSpecItem;
+import com.suisung.mall.common.utils.ContextUtil;
import com.suisung.mall.common.utils.I18nUtil;
+import com.suisung.mall.core.web.service.RedisService;
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
import com.suisung.mall.shop.base.mapper.ShopBaseProductSpecMapper;
import com.suisung.mall.shop.base.service.ShopBaseProductCategoryService;
import com.suisung.mall.shop.base.service.ShopBaseProductSpecService;
import com.suisung.mall.shop.product.service.ShopProductSpecItemService;
+import com.suisung.mall.shop.sync.keymanage.RedisKey;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
/**
@@ -37,9 +39,16 @@ public class ShopBaseProductSpecServiceImpl extends BaseServiceImpl> specMap() {
- List specs = find(new QueryWrapper<>());
+ QueryWrapper queryWrapper= new QueryWrapper<>();
+ UserDto userDto= ContextUtil.getCurrentUser();
+ Integer store_id = Integer.valueOf(userDto.getStore_id());
+ queryWrapper.eq("store_id",store_id);
+ List specs = find(queryWrapper);
Map> map = new HashMap<>();
for (ShopBaseProductSpec spec : specs) {
if (spec.getSpec_category_id() == 0) {
@@ -82,4 +91,30 @@ public class ShopBaseProductSpecServiceImpl extends BaseServiceImpl();
+ String redisKey=RedisKey.STOREDATASHOPBASEPRODUCTSPEC+":"+store_id;
+ if(null!=redisService.get(redisKey)){
+ map= (Map) redisService.get(redisKey);
+ }else {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("store_id",store_id);
+ List shopBaseProductSpecList=this.list(queryWrapper);
+ for(ShopBaseProductSpec spec:shopBaseProductSpecList){
+ map.put(String.valueOf(spec.getSpec_category_id()),spec);
+ }
+ if (CollUtil.isNotEmpty(map)) redisService.set(redisKey, map, 60 * 60);
+ }
+ return map;
+ }
+
+ @Override
+ public void clearShopBaseProductSpecMap(Integer store_id) {
+ String redisKey=RedisKey.STOREDATASHOPBASEPRODUCTSPEC+":"+store_id;
+ if(null!=redisService.get(redisKey)){
+ redisService.del(redisKey);
+ }
+ }
}
diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/base/service/impl/ShopBaseProductTypeServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/base/service/impl/ShopBaseProductTypeServiceImpl.java
index 7dfa8ead..58f0ae2e 100644
--- a/mall-shop/src/main/java/com/suisung/mall/shop/base/service/impl/ShopBaseProductTypeServiceImpl.java
+++ b/mall-shop/src/main/java/com/suisung/mall/shop/base/service/impl/ShopBaseProductTypeServiceImpl.java
@@ -85,8 +85,8 @@ public class ShopBaseProductTypeServiceImpl extends BaseServiceImpl {
void clearRelateGoodsId();
void clearKey();
+ void batchUpdateSeq(List shopNumberSeqList);
+
+ List getBatchSpecItemId(int batchSize);
+
+ void clearKeyStoreItemSepcId();
}
diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/number/service/impl/ShopNumberSeqServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/number/service/impl/ShopNumberSeqServiceImpl.java
index 1146b002..2542b974 100644
--- a/mall-shop/src/main/java/com/suisung/mall/shop/number/service/impl/ShopNumberSeqServiceImpl.java
+++ b/mall-shop/src/main/java/com/suisung/mall/shop/number/service/impl/ShopNumberSeqServiceImpl.java
@@ -3,22 +3,24 @@ package com.suisung.mall.shop.number.service.impl;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.suisung.mall.common.modules.number.ShopNumberSeq;
+import com.suisung.mall.common.modules.product.ShopProductSpecItem;
import com.suisung.mall.core.web.service.RedisService;
import com.suisung.mall.core.web.service.impl.BaseServiceImpl;
import com.suisung.mall.shop.number.mapper.ShopNumberSeqMapper;
import com.suisung.mall.shop.number.service.ShopNumberSeqService;
-import org.apache.ibatis.session.ExecutorType;
-import org.apache.ibatis.session.SqlSession;
-import org.apache.ibatis.session.SqlSessionFactory;
+import com.suisung.mall.shop.product.service.ShopProductSpecItemService;
+import com.suisung.mall.shop.sync.keymanage.RedisKey;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
+import java.util.stream.IntStream;
import java.util.stream.LongStream;
@@ -40,6 +42,9 @@ public class ShopNumberSeqServiceImpl extends BaseServiceImpl getBatchSpecItemId(int batchSize) {
+ int start=0;
+ if(null!=redisService.get(RedisKey.STOREDATASPECITEMID)){
+ start=(Integer) redisService.get(RedisKey.STOREDATASPECITEMID);
+ redisService.set(RedisKey.STOREDATASPECITEMID,start+batchSize);
+ }
+ QueryWrapper queryWrapper= new QueryWrapper<>();
+ queryWrapper.select("max(spec_item_id) as spec_item_id");
+ ShopProductSpecItem shopProductSpecItem=shopProductSpecItemService.getOne(queryWrapper);
+ if(null!=shopProductSpecItem){
+ start=shopProductSpecItem.getSpec_item_id();
+ redisService.set(RedisKey.STOREDATASPECITEMID,start+batchSize);
+ }
+ if(start==0){
+ redisService.set(RedisKey.STOREDATASPECITEMID,start+batchSize);
+ return IntStream.rangeClosed(start+1, start+batchSize).boxed().collect(Collectors.toList());
+ }
+ return IntStream.rangeClosed(start+1, start+batchSize).boxed().collect(Collectors.toList());
+ }
+
+ public static void main(String[] args) {
+ System.out.printf(IntStream.rangeClosed(1, 1).boxed().collect(Collectors.toList()).toString());
+ }
+
}
diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/product/controller/admin/ShopProductSpecItemController.java b/mall-shop/src/main/java/com/suisung/mall/shop/product/controller/admin/ShopProductSpecItemController.java
index eed4e780..60ef30e5 100644
--- a/mall-shop/src/main/java/com/suisung/mall/shop/product/controller/admin/ShopProductSpecItemController.java
+++ b/mall-shop/src/main/java/com/suisung/mall/shop/product/controller/admin/ShopProductSpecItemController.java
@@ -66,7 +66,8 @@ public class ShopProductSpecItemController extends BaseControllerImpl {
public CommonResult specItems(ShopProductSpecItem shopProductSpecItem) {
UserDto user = getCurrentUser();
- Integer store_id = Convert.toInt(user.getStore_id());
+ //Integer store_id = Convert.toInt(user.getStore_id());
+ Integer store_id = 1;
QueryWrapper queryWrapper = new QueryWrapper<>();
Integer spec_id = shopProductSpecItem.getSpec_id();
@@ -86,7 +87,8 @@ public class ShopProductSpecItemController extends BaseControllerImpl {
@RequestMapping(value = "/edit", method = RequestMethod.POST)
public CommonResult edit(ShopProductSpecItem shopProductSpecItem) {
UserDto user = getCurrentUser();
- shopProductSpecItem.setStore_id(Integer.valueOf(user.getStore_id()));
+ // shopProductSpecItem.setStore_id(Integer.valueOf(user.getStore_id()));
+ shopProductSpecItem.setStore_id(1);
return CommonResult.success(shopProductSpecItemService.saveOrUpdate(shopProductSpecItem));
}
diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/product/service/ShopProductSpecItemService.java b/mall-shop/src/main/java/com/suisung/mall/shop/product/service/ShopProductSpecItemService.java
index ec6583e1..d8659815 100644
--- a/mall-shop/src/main/java/com/suisung/mall/shop/product/service/ShopProductSpecItemService.java
+++ b/mall-shop/src/main/java/com/suisung/mall/shop/product/service/ShopProductSpecItemService.java
@@ -5,6 +5,7 @@ import com.suisung.mall.common.modules.product.ShopProductSpecItem;
import com.suisung.mall.core.web.service.IBaseService;
import java.util.List;
+import java.util.Map;
/**
*
@@ -17,4 +18,8 @@ import java.util.List;
public interface ShopProductSpecItemService extends IBaseService {
List getItems(QueryWrapper queryWrapper);
+
+ Map getExistItem(Integer storeId);
+
+ void clearExistItem(Integer storeId);
}
diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductBaseServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductBaseServiceImpl.java
index 3829658c..71bec3a4 100644
--- a/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductBaseServiceImpl.java
+++ b/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductBaseServiceImpl.java
@@ -38,6 +38,7 @@ import com.suisung.mall.common.modules.sixun.SxSyncGoods;
import com.suisung.mall.common.modules.store.ShopStoreActivityBase;
import com.suisung.mall.common.modules.store.ShopStoreActivityItem;
import com.suisung.mall.common.modules.store.ShopStoreBase;
+import com.suisung.mall.common.modules.sync.ProductMapping;
import com.suisung.mall.common.modules.user.ShopUserCart;
import com.suisung.mall.common.modules.user.ShopUserFavoritesItem;
import com.suisung.mall.common.modules.user.ShopUserProductBrowse;
@@ -65,13 +66,12 @@ import com.suisung.mall.shop.product.pojo.vo.ProductVo;
import com.suisung.mall.shop.product.service.*;
import com.suisung.mall.shop.sixun.service.SxSyncGoodsService;
import com.suisung.mall.shop.store.service.*;
-import com.suisung.mall.shop.sync.Utils.BatchInsertUtils;
+import com.suisung.mall.shop.sync.Utils.ProductPriceCalculator;
+import com.suisung.mall.shop.sync.Utils.ShopJsonUtils;
+import com.suisung.mall.shop.sync.service.ProductMappingService;
import com.suisung.mall.shop.user.service.*;
import org.apache.commons.lang3.StringUtils;
-import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
-import org.bouncycastle.jcajce.provider.symmetric.util.BaseMac;
-import org.mybatis.spring.SqlSessionFactoryBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -83,8 +83,6 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.TransactionTemplate;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
-
-import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.Serializable;
@@ -210,8 +208,11 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl udpateItemIds = new ArrayList<>();
List addShopProductItems=new ArrayList<>();
List updateShopProductItems=new ArrayList<>();
- int taskCount = 2;
- CountDownLatch latch = new CountDownLatch(taskCount);
+
+ List addShopProductSpecItems=new ArrayList<>();
+ List updateShopProductSpecItems=new ArrayList<>();
+ // int taskCount = 2;
+ // CountDownLatch latch = new CountDownLatch(taskCount);
// 1. 批量新增
if (CollUtil.isNotEmpty(newProducts)) {
// 4. 批量生成新商品的ID
@@ -5466,7 +5469,16 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl items = newShopProductItemList.get(i);
processProductItems(items, productId, addItemSeqs);
@@ -5488,11 +5500,10 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl itemIds = processProductItemsId(addShopProductItems, addItemSeqs);
+ List itemIds = processProductItemsId(addShopProductItems, addItemSeqs,newShopProductInfoList);
addItemIds.addAll(itemIds);
// 2. 批量更新
if (CollUtil.isNotEmpty(newProducts)) {
- // new Thread(() -> {
logger.info("保存任务开始执行");
try {
long startTime=System.nanoTime();
@@ -5500,17 +5511,10 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl items = udpateShopProductItemList.get(i);
processProductItems(items, productId, updateItemSeqs);//
@@ -5548,11 +5561,10 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl itemIds = processProductItemsId(updateShopProductItems, updateItemSeqs);
+ List itemIds = processProductItemsId(updateShopProductItems, updateItemSeqs,newShopProductInfoList);
udpateItemIds.addAll(itemIds);
// 2. 批量更新
if (CollUtil.isNotEmpty(updateProducts)) {
- // new Thread(() -> {
logger.info("更新任务开始执行");
try {
long startTime=System.nanoTime();
@@ -5560,25 +5572,25 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl processProductItemsId(List items,List itemSeqs){
+ private List processProductItemsId(List items,List itemSeqs,
+ List newShopProductInfoList){
List itemIds = new ArrayList<>();
if (CollUtil.isEmpty(items)) return itemIds;
List generatedIds = shopNumberSeqService.batchCreateNextNo("item_id", items.size());
+ // Map cacheMap=new HashMap<>();
for (int i = 0; i < items.size(); i++) {
Long itemId = generatedIds.get(i);
ShopProductItem item = items.get(i);
item.setItem_id(itemId);
+// if(StringUtils.isNotEmpty(item.getItem_spec())){
+// String product_uniqid=ShopJsonUtils.generateJsonWithOrgJson(item.getSpec_item_ids(),new Object[]{itemId,item.getItem_unit_price(),"",1002});
+// cacheMap.put(item.getProductName(),product_uniqid);
+// }
itemIds.add(itemId);
ShopProductItemSeq field_row= itemSeqs.get(i);
field_row.setItem_id(itemId);
-
}
-
+// for(ShopProductInfo shopProductInfo:newShopProductInfoList){
+// if(ObjectUtil.isNotEmpty(cacheMap.get(shopProductInfo.getProductName()))){
+// String product_uniqid=cacheMap.get(shopProductInfo.getProductName());
+// shopProductInfo.setProduct_uniqid(product_uniqid);
+// }
+// }
return itemIds;
}
+// /**
+// * 计算并产生规格 与商品配置表匹配,匹配正确则新增规格商品
+// * @return
+// */
+// private ShopProductSpecItem processShopProductSpecItem(ShopProductBase base){
+// Map shopProductSpecItemMap = shopProductSpecItemService.getExistItem(base.getStore_id());
+// Map productMappingMap = productMappingService.getProductMapping();
+// Map ShopBaseProductSpecMap = baseProductSpecService.getShopBaseProductSpecMap(base.getStore_id());
+// String productName=base.getProduct_name();
+//
+// if(null!=productMappingMap.get(productName)){
+// Integer specId= (Integer) ShopBaseProductSpecMap.get(base.getProduct_name()+"规格");
+// ProductMapping productMapping= (ProductMapping) productMappingMap.get(productName);
+// String Spec_item_name=productMapping.getProductName()+productMapping.getSpecValue()+productMapping.getSpecUnit();//规格名称
+// Integer Spec_item_id= (Integer) shopProductSpecItemMap.get(Spec_item_name);
+// ShopProductSpecItem addShopProductSpecItem=new ShopProductSpecItem();
+// addShopProductSpecItem.setUpdate(true);
+// if(ObjectUtil.isEmpty(Spec_item_id)){
+// Spec_item_id=shopNumberSeqService.getSpecItemId();
+// addShopProductSpecItem.setUpdate(false);
+// }
+// addShopProductSpecItem.setStore_id(base.getStore_id());
+// addShopProductSpecItem.setCategory_id(base.getCategoryId());
+// addShopProductSpecItem.setSpec_item_id(Spec_item_id);
+// addShopProductSpecItem.setSpec_id(specId);//根据规格获取
+// addShopProductSpecItem.setSpec_item_name(Spec_item_name);
+// addShopProductSpecItem.setSpec_item_enable(1);//上架
+// addShopProductSpecItem.setSpec_item_order("10");
+// BigDecimal[] bigDecimals= ProductPriceCalculator.calculatePriceAndQuantity(base.getUnit_price(),base.getShop_weight(),productMapping.getSpecValue(),productMapping.getSpecUnit());
+// addShopProductSpecItem.setItemPrice(bigDecimals[0]);
+// addShopProductSpecItem.setItemQuantity(bigDecimals[1]);
+// List