diff --git a/spzx-manager/src/main/java/com/atguigu/spzx/manger/mapper/ProductDetailsMapper.java b/spzx-manager/src/main/java/com/atguigu/spzx/manger/mapper/ProductDetailsMapper.java new file mode 100644 index 0000000..4616521 --- /dev/null +++ b/spzx-manager/src/main/java/com/atguigu/spzx/manger/mapper/ProductDetailsMapper.java @@ -0,0 +1,14 @@ +package com.atguigu.spzx.manger.mapper; + +import com.atguigu.spzx.model.entity.product.ProductDetails; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface ProductDetailsMapper { + /** + * 保存数据 + * + * @param productDetails 商品实体类 + */ + void save(ProductDetails productDetails); +} diff --git a/spzx-manager/src/main/java/com/atguigu/spzx/manger/mapper/ProductMapper.java b/spzx-manager/src/main/java/com/atguigu/spzx/manger/mapper/ProductMapper.java index a4ecbbd..77f9eb5 100644 --- a/spzx-manager/src/main/java/com/atguigu/spzx/manger/mapper/ProductMapper.java +++ b/spzx-manager/src/main/java/com/atguigu/spzx/manger/mapper/ProductMapper.java @@ -15,4 +15,11 @@ public interface ProductMapper { * @return 查询结果 */ List findByPage(ProductDto dto); + + /** + * 保存商品数据 + * + * @param product 商品实体类 + */ + void save(Product product); } diff --git a/spzx-manager/src/main/java/com/atguigu/spzx/manger/mapper/ProductSkuMapper.java b/spzx-manager/src/main/java/com/atguigu/spzx/manger/mapper/ProductSkuMapper.java new file mode 100644 index 0000000..f8c8880 --- /dev/null +++ b/spzx-manager/src/main/java/com/atguigu/spzx/manger/mapper/ProductSkuMapper.java @@ -0,0 +1,14 @@ +package com.atguigu.spzx.manger.mapper; + +import com.atguigu.spzx.model.entity.product.ProductSku; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface ProductSkuMapper { + /** + * 保存数据 + * + * @param productSku 商品实体类 + */ + void save(ProductSku productSku); +} diff --git a/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/ProductService.java b/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/ProductService.java index b10b5d4..81e7c83 100644 --- a/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/ProductService.java +++ b/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/ProductService.java @@ -15,5 +15,10 @@ public interface ProductService { */ PageInfo findByPage(Integer page, Integer limit, ProductDto dto); + /** + * 保存商品数据接口 + * + * @param product 商品实体类 + */ void save(Product product); } diff --git a/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/impl/ProductServiceImpl.java b/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/impl/ProductServiceImpl.java index 71aefb2..d941dd0 100644 --- a/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/impl/ProductServiceImpl.java +++ b/spzx-manager/src/main/java/com/atguigu/spzx/manger/service/impl/ProductServiceImpl.java @@ -1,14 +1,19 @@ package com.atguigu.spzx.manger.service.impl; +import com.atguigu.spzx.manger.mapper.ProductDetailsMapper; import com.atguigu.spzx.manger.mapper.ProductMapper; +import com.atguigu.spzx.manger.mapper.ProductSkuMapper; import com.atguigu.spzx.manger.service.ProductService; import com.atguigu.spzx.model.dto.product.ProductDto; import com.atguigu.spzx.model.entity.product.Product; +import com.atguigu.spzx.model.entity.product.ProductDetails; +import com.atguigu.spzx.model.entity.product.ProductSku; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -16,13 +21,17 @@ import java.util.List; public class ProductServiceImpl implements ProductService { @Autowired private ProductMapper productMapper; + @Autowired + private ProductDetailsMapper productDetailsMapper; + @Autowired + private ProductSkuMapper productSkuMapper; /** * 列表查询 * * @param page 当前也 * @param limit 每页限制 - * @param dto + * @param dto 商品实体类 * @return 分页结果 */ @Override @@ -33,4 +42,40 @@ public class ProductServiceImpl implements ProductService { startPage.close(); return new PageInfo<>(productList); } + + /** + * 保存商品数据接口 + * + * @param product 商品实体类 + */ + @Transactional + @Override + public void save(Product product) { + // 保存商品数据 + product.setStatus(0); // 设置上架状态为0 + product.setAuditStatus(0); // 设置审核状态为0 + productMapper.save(product); + + // 保存商品sku数据 + List productSkuList = product.getProductSkuList(); + for (int i = 0, size = productSkuList.size(); i < size; i++) { + + // 获取ProductSku对象 + ProductSku productSku = productSkuList.get(i); + productSku.setSkuCode(product.getId() + "_" + i); // 构建skuCode + + productSku.setProductId(product.getId()); // 设置商品id + productSku.setSkuName(product.getName() + productSku.getSkuSpec()); + productSku.setSaleNum(0); // 设置销量 + productSku.setStatus(0); + productSkuMapper.save(productSku); // 保存数据 + + } + + // 保存商品详情数据 + ProductDetails productDetails = new ProductDetails(); + productDetails.setProductId(product.getId()); + productDetails.setImageUrls(product.getDetailsImageUrls()); + productDetailsMapper.save(productDetails); + } } diff --git a/spzx-manager/src/main/resources/mapper/ProductDetailsMapper.xml b/spzx-manager/src/main/resources/mapper/ProductDetailsMapper.xml new file mode 100644 index 0000000..2156680 --- /dev/null +++ b/spzx-manager/src/main/resources/mapper/ProductDetailsMapper.xml @@ -0,0 +1,9 @@ + + + + + + + insert into product_details (id, product_id, image_urls, create_time, update_time, is_deleted) + values (#{id}, #{productId}, #{imageUrls}, now(), now(), 0) + diff --git a/spzx-manager/src/main/resources/mapper/ProductMapper.xml b/spzx-manager/src/main/resources/mapper/ProductMapper.xml index 970f4e7..05d776a 100644 --- a/spzx-manager/src/main/resources/mapper/ProductMapper.xml +++ b/spzx-manager/src/main/resources/mapper/ProductMapper.xml @@ -6,6 +6,14 @@ id,name,brand_id,category1_id,category2_id,category3_id,unit_name,slider_urls,spec_value,status,audit_status,audit_message,create_time,update_time,is_deleted + + + insert into product (id, name, brand_id, category1_id, category2_id, category3_id, unit_name, slider_urls, + spec_value, status, audit_status, audit_message, create_time, update_time, is_deleted) + values (#{id}, #{name}, #{brandId}, #{category1Id}, #{category2Id}, #{category3Id}, #{unitName}, #{sliderUrls}, + #{specValue}, #{status}, #{auditStatus}, #{auditMessage}, now(), now(), 0) + +