diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index af07cc8..bc615df 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,14 +4,13 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
@@ -25,12 +24,15 @@
+
+
+
@@ -51,6 +53,9 @@
+
+
+
{
"customColor": "",
"associatedIndex": 5
@@ -70,6 +75,7 @@
"RunOnceActivity.ShowReadmeOnStart": "true",
"SHARE_PROJECT_CONFIGURATION_FILES": "true",
"WebServerToolWindowFactoryState": "false",
+ "code.cleanup.on.save": "true",
"git-widget-placeholder": "master",
"jdk.selected.JAVA_MODULE": "21",
"last_opened_file_path": "F:/File/Java/spzx-parent/spzx-service/service-product/src/main/java/cn/bunny/web/product",
@@ -77,10 +83,12 @@
"node.js.detected.package.tslint": "true",
"node.js.selected.package.eslint": "(autodetect)",
"node.js.selected.package.tslint": "(autodetect)",
+ "nodejs_package_manager_path": "npm",
"project.structure.last.edited": "Project",
"project.structure.proportion": "0.15",
"project.structure.side.proportion": "0.2",
- "settings.editor.selected.configurable": "reference.settingsdialog.IDE.editor.colors.XML",
+ "rearrange.code.on.save": "true",
+ "settings.editor.selected.configurable": "actions.on.save",
"vue.rearranger.settings.migration": "true"
},
"keyToStringList": {
@@ -155,7 +163,7 @@
1703487755445
-
+
@@ -197,7 +205,23 @@
1703557481401
-
+
+
+ 1703559123840
+
+
+
+ 1703559123840
+
+
+
+ 1703559306235
+
+
+
+ 1703559306235
+
+
@@ -208,7 +232,9 @@
-
+
+
+
@@ -220,6 +246,11 @@
+
+
+
+
+
diff --git a/spzx-service/service-product/src/main/java/cn/bunny/web/product/controller/ProductController.java b/spzx-service/service-product/src/main/java/cn/bunny/web/product/controller/ProductController.java
index 5c21da2..952bacb 100644
--- a/spzx-service/service-product/src/main/java/cn/bunny/web/product/controller/ProductController.java
+++ b/spzx-service/service-product/src/main/java/cn/bunny/web/product/controller/ProductController.java
@@ -4,9 +4,11 @@ import cn.bunny.common.spzx.model.dto.h5.ProductSkuDto;
import cn.bunny.common.spzx.model.entity.product.ProductSku;
import cn.bunny.common.spzx.model.vo.common.Result;
import cn.bunny.common.spzx.model.vo.common.ResultCodeEnum;
+import cn.bunny.common.spzx.model.vo.h5.ProductItemVo;
import cn.bunny.web.product.service.ProductService;
import com.github.pagehelper.PageInfo;
import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@@ -27,4 +29,12 @@ public class ProductController {
PageInfo pageInfo = productService.findByPage(page, limit, productSkuDto);
return Result.build(pageInfo, ResultCodeEnum.SUCCESS);
}
+
+ @Operation(summary = "商品详情")
+ @GetMapping("item/{skuId}")
+ @Parameter(name = "skuId", description = "商品skuId", required = true)
+ public Result item(@PathVariable("skuId") Long skuId) {
+ ProductItemVo productItemVo = productService.itemBySkuId(skuId);
+ return Result.build(productItemVo, ResultCodeEnum.SUCCESS);
+ }
}
diff --git a/spzx-service/service-product/src/main/java/cn/bunny/web/product/mapper/ProductDetailsMapper.java b/spzx-service/service-product/src/main/java/cn/bunny/web/product/mapper/ProductDetailsMapper.java
new file mode 100644
index 0000000..776428c
--- /dev/null
+++ b/spzx-service/service-product/src/main/java/cn/bunny/web/product/mapper/ProductDetailsMapper.java
@@ -0,0 +1,10 @@
+package cn.bunny.web.product.mapper;
+
+import cn.bunny.common.spzx.model.entity.product.ProductDetails;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ProductDetailsMapper {
+ // productId,获取商品详情skuId信息
+ ProductDetails getByProductId(Long productId);
+}
diff --git a/spzx-service/service-product/src/main/java/cn/bunny/web/product/mapper/ProductMapper.java b/spzx-service/service-product/src/main/java/cn/bunny/web/product/mapper/ProductMapper.java
new file mode 100644
index 0000000..fa23dd4
--- /dev/null
+++ b/spzx-service/service-product/src/main/java/cn/bunny/web/product/mapper/ProductMapper.java
@@ -0,0 +1,10 @@
+package cn.bunny.web.product.mapper;
+
+import cn.bunny.common.spzx.model.entity.product.Product;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ProductMapper {
+ // 根据第二步获取sku,从sku中获取productId,获取商品数量
+ Product getById(Long productId);
+}
diff --git a/spzx-service/service-product/src/main/java/cn/bunny/web/product/mapper/ProductSkuMapper.java b/spzx-service/service-product/src/main/java/cn/bunny/web/product/mapper/ProductSkuMapper.java
index 2db19b8..b213843 100644
--- a/spzx-service/service-product/src/main/java/cn/bunny/web/product/mapper/ProductSkuMapper.java
+++ b/spzx-service/service-product/src/main/java/cn/bunny/web/product/mapper/ProductSkuMapper.java
@@ -10,6 +10,14 @@ import java.util.List;
public interface ProductSkuMapper {
List selectProductSkuBySale();
+
// 分页查询
List findByPage(ProductSkuDto productSkuDto);
+
+ // 根据skuId获取sku信息
+ ProductSku getById(Long skuId);
+
+
+ // 封装map集合 == 商品规则对应商品skuId信息
+ List findByProductId(Long productId);
}
diff --git a/spzx-service/service-product/src/main/java/cn/bunny/web/product/service/ProductService.java b/spzx-service/service-product/src/main/java/cn/bunny/web/product/service/ProductService.java
index 2b2dcd5..9deb3dc 100644
--- a/spzx-service/service-product/src/main/java/cn/bunny/web/product/service/ProductService.java
+++ b/spzx-service/service-product/src/main/java/cn/bunny/web/product/service/ProductService.java
@@ -2,6 +2,7 @@ package cn.bunny.web.product.service;
import cn.bunny.common.spzx.model.dto.h5.ProductSkuDto;
import cn.bunny.common.spzx.model.entity.product.ProductSku;
+import cn.bunny.common.spzx.model.vo.h5.ProductItemVo;
import com.github.pagehelper.PageInfo;
import java.util.List;
@@ -9,6 +10,10 @@ import java.util.List;
public interface ProductService {
// 根据销量排序,获取前十条激励
List selectProductSkuBySal();
+
// 分页查询
PageInfo findByPage(Integer page, Integer limit, ProductSkuDto productSkuDto);
+
+ // 商品详情
+ ProductItemVo itemBySkuId(Long skuId);
}
diff --git a/spzx-service/service-product/src/main/java/cn/bunny/web/product/service/imp/ProductServiceImpl.java b/spzx-service/service-product/src/main/java/cn/bunny/web/product/service/imp/ProductServiceImpl.java
index a948705..73f213c 100644
--- a/spzx-service/service-product/src/main/java/cn/bunny/web/product/service/imp/ProductServiceImpl.java
+++ b/spzx-service/service-product/src/main/java/cn/bunny/web/product/service/imp/ProductServiceImpl.java
@@ -1,7 +1,12 @@
package cn.bunny.web.product.service.imp;
import cn.bunny.common.spzx.model.dto.h5.ProductSkuDto;
+import cn.bunny.common.spzx.model.entity.product.Product;
+import cn.bunny.common.spzx.model.entity.product.ProductDetails;
import cn.bunny.common.spzx.model.entity.product.ProductSku;
+import cn.bunny.common.spzx.model.vo.h5.ProductItemVo;
+import cn.bunny.web.product.mapper.ProductDetailsMapper;
+import cn.bunny.web.product.mapper.ProductMapper;
import cn.bunny.web.product.mapper.ProductSkuMapper;
import cn.bunny.web.product.service.ProductService;
import com.alibaba.fastjson.JSON;
@@ -12,13 +17,18 @@ import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
@Service
public class ProductServiceImpl implements ProductService {
@Resource
private ProductSkuMapper productSkuMapper;
+
+ @Resource
+ private ProductMapper productMapper;
+
+ @Resource
+ private ProductDetailsMapper productDetailsMapper;
@Resource
private RedisTemplate redisTemplate;
@@ -53,4 +63,37 @@ public class ProductServiceImpl implements ProductService {
List productSkuList = productSkuMapper.findByPage(productSkuDto);
return new PageInfo<>(productSkuList);
}
+
+ // 商品详情
+ @Override
+ public ProductItemVo itemBySkuId(Long skuId) {
+ // 1.创建vo对象,用于封装最终数据
+ ProductItemVo productItemVo = new ProductItemVo();
+ // 2. 根据skuId获取sku信息
+ ProductSku productSku = productSkuMapper.getById(skuId);
+ // 3. 根据第二步获取sku,从sku中获取productId,获取商品数量
+ Long productId = productSku.getProductId();
+ Product product = productMapper.getById(productId);
+ // 4.productId,获取商品详情skuId信息
+ ProductDetails productDetails = productDetailsMapper.getByProductId(productId);
+ // 5.封装map集合 == 商品规则对应商品skuId信息
+ Map skuSpecValueMap = new HashMap<>();
+ List productSkuList = productSkuMapper.findByProductId(productId);
+ productSkuList.forEach(item -> {
+ skuSpecValueMap.put(item.getSkuSpec(), item.getId());
+ });
+ // 6.把需要封装数据到productItemVo中
+ String imageUrls = productDetails.getImageUrls();
+ String[] split = imageUrls.split(",");
+ List list = Arrays.asList(split);
+
+ productItemVo.setProduct(product);
+ productItemVo.setProductSku(productSku);
+ productItemVo.setSkuSpecValueMap(skuSpecValueMap);
+ productItemVo.setDetailsImageUrlList(list);
+ productItemVo.setSliderUrlList(Arrays.asList(product.getSliderUrls().split(",")));
+ productItemVo.setSpecValueList(JSON.parseArray(product.getSpecValue()));
+
+ return productItemVo;
+ }
}
diff --git a/spzx-service/service-product/src/main/resources/mapper/product/ProductDetailsMapper.xml b/spzx-service/service-product/src/main/resources/mapper/product/ProductDetailsMapper.xml
new file mode 100644
index 0000000..cd78435
--- /dev/null
+++ b/spzx-service/service-product/src/main/resources/mapper/product/ProductDetailsMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+ id,product_id,image_urls,create_time,update_time,is_deleted
+
+
+
+
+
diff --git a/spzx-service/service-product/src/main/resources/mapper/product/ProductMapper.xml b/spzx-service/service-product/src/main/resources/mapper/product/ProductMapper.xml
new file mode 100644
index 0000000..b6f1346
--- /dev/null
+++ b/spzx-service/service-product/src/main/resources/mapper/product/ProductMapper.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+ 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
+
+
+
+
+
diff --git a/spzx-service/service-product/src/main/resources/mapper/product/ProductSkuMapper.xml b/spzx-service/service-product/src/main/resources/mapper/product/ProductSkuMapper.xml
index 271c1b4..4f95d73 100644
--- a/spzx-service/service-product/src/main/resources/mapper/product/ProductSkuMapper.xml
+++ b/spzx-service/service-product/src/main/resources/mapper/product/ProductSkuMapper.xml
@@ -20,6 +20,7 @@
order by sku.sale_num desc
limit 10
+
+
+
+
+
+
+