提交 5af19f92 authored 作者: YunaiV's avatar YunaiV

商品详情

上级 15a94253
...@@ -2,6 +2,7 @@ package cn.iocoder.common.framework.util; ...@@ -2,6 +2,7 @@ package cn.iocoder.common.framework.util;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
...@@ -17,4 +18,13 @@ public class StringUtil { ...@@ -17,4 +18,13 @@ public class StringUtil {
return Arrays.asList(stringArray); return Arrays.asList(stringArray);
} }
public static List<Integer> splitToInt(String toSplit, String delim) {
String[] stringArray = StringUtils.tokenizeToStringArray(toSplit, delim);
List<Integer> array = new ArrayList<>(stringArray.length);
for (String string : stringArray) {
array.add(Integer.valueOf(string));
}
return array;
}
} }
\ No newline at end of file
...@@ -121,8 +121,9 @@ public class AdminsProductSpuController { ...@@ -121,8 +121,9 @@ public class AdminsProductSpuController {
@GetMapping("/spu/info") @GetMapping("/spu/info")
@ApiOperation("商品 SPU 明细") @ApiOperation("商品 SPU 明细")
public CommonResult<AdminsProductSpuDetailVO> info() { @ApiImplicitParam(name = "id", value = "SPU 编号", required = true, example = "100")
return null; public CommonResult<AdminsProductSpuDetailVO> info(@RequestParam("id") Integer id) {
return ProductSpuConvert.INSTANCE.convert(productSpuService.getProductSpu(id));
} }
private <T> List<T> parseSkus(String skuStr, Class<T> clazz) { private <T> List<T> parseSkus(String skuStr, Class<T> clazz) {
......
...@@ -19,7 +19,8 @@ public class ProductSpuController { ...@@ -19,7 +19,8 @@ public class ProductSpuController {
// TODO 详情 // TODO 详情
@GetMapping("/info") @GetMapping("/info")
public ProductSpuBO info(@RequestParam("id") Integer id) { public ProductSpuBO info(@RequestParam("id") Integer id) {
return productSpuService.getProductSpu(id); // return productSpuService.getProductSpu(id);
return null;
} }
// TODO 分页 // TODO 分页
......
package cn.iocoder.mall.product.api; package cn.iocoder.mall.product.api;
import cn.iocoder.common.framework.vo.CommonResult; import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.mall.product.api.bo.ProductSpuBO;
import cn.iocoder.mall.product.api.bo.ProductSpuDetailBO; import cn.iocoder.mall.product.api.bo.ProductSpuDetailBO;
import cn.iocoder.mall.product.api.bo.ProductSpuPageBO; import cn.iocoder.mall.product.api.bo.ProductSpuPageBO;
import cn.iocoder.mall.product.api.dto.ProductSpuAddDTO; import cn.iocoder.mall.product.api.dto.ProductSpuAddDTO;
...@@ -10,8 +9,7 @@ import cn.iocoder.mall.product.api.dto.ProductSpuUpdateDTO; ...@@ -10,8 +9,7 @@ import cn.iocoder.mall.product.api.dto.ProductSpuUpdateDTO;
public interface ProductSpuService { public interface ProductSpuService {
// TODO 芋艿,需要去改改 CommonResult<ProductSpuDetailBO> getProductSpu(Integer id);
ProductSpuBO getProductSpu(Integer id);
CommonResult<ProductSpuDetailBO> addProductSpu(Integer adminId, ProductSpuAddDTO productSpuAddDTO); CommonResult<ProductSpuDetailBO> addProductSpu(Integer adminId, ProductSpuAddDTO productSpuAddDTO);
......
...@@ -7,7 +7,6 @@ import cn.iocoder.common.framework.util.StringUtil; ...@@ -7,7 +7,6 @@ import cn.iocoder.common.framework.util.StringUtil;
import cn.iocoder.common.framework.vo.CommonResult; import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.mall.product.api.ProductSpuService; import cn.iocoder.mall.product.api.ProductSpuService;
import cn.iocoder.mall.product.api.bo.ProductAttrDetailBO; import cn.iocoder.mall.product.api.bo.ProductAttrDetailBO;
import cn.iocoder.mall.product.api.bo.ProductSpuBO;
import cn.iocoder.mall.product.api.bo.ProductSpuDetailBO; import cn.iocoder.mall.product.api.bo.ProductSpuDetailBO;
import cn.iocoder.mall.product.api.bo.ProductSpuPageBO; import cn.iocoder.mall.product.api.bo.ProductSpuPageBO;
import cn.iocoder.mall.product.api.constant.ProductErrorCodeEnum; import cn.iocoder.mall.product.api.constant.ProductErrorCodeEnum;
...@@ -43,11 +42,31 @@ public class ProductSpuServiceImpl implements ProductSpuService { ...@@ -43,11 +42,31 @@ public class ProductSpuServiceImpl implements ProductSpuService {
@Autowired @Autowired
private ProductAttrServiceImpl productAttrService; private ProductAttrServiceImpl productAttrService;
// @Override
// public ProductSpuBO getProductSpu(Integer id) {
// ProductSpuDO productSpuDO = productSpuMapper.selectById(id);
// // 转换成 BO
// return ProductSpuConvert.INSTANCE.convert(productSpuDO);
// }
@Override @Override
public ProductSpuBO getProductSpu(Integer id) { public CommonResult<ProductSpuDetailBO> getProductSpu(Integer id) {
ProductSpuDO productSpuDO = productSpuMapper.selectById(id); // 校验商品 spu 存在
// 转换成 BO ProductSpuDO spu = productSpuMapper.selectById(id);
return ProductSpuConvert.INSTANCE.convert(productSpuDO); if (spu == null) {
return ServiceExceptionUtil.error(ProductErrorCodeEnum.PRODUCT_SPU_NOT_EXISTS.getCode());
}
// 获得商品 sku 数组
List<ProductSkuDO> skus = productSkuMapper.selectListBySpuIdAndStatus(id, ProductSpuConstants.SKU_STATUS_ENABLE);
// 获得规格
Set<Integer> productAttrValueIds = new HashSet<>();
skus.forEach(sku -> productAttrValueIds.addAll(StringUtil.splitToInt(sku.getAttrs(), ",")));
CommonResult<List<ProductAttrDetailBO>> validAttrResult = productAttrService.validProductAttrAndValue(productAttrValueIds);
if (validAttrResult.isError()) {
return CommonResult.error(validAttrResult);
}
// 返回成功
return CommonResult.success(ProductSpuConvert.INSTANCE.convert2(spu, skus, validAttrResult.getData()));
} }
@SuppressWarnings("Duplicates") @SuppressWarnings("Duplicates")
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论