From f2d803c111341d9ee2d82ddbb40b3e447d5cd0fd Mon Sep 17 00:00:00 2001 From: YunaiV Date: Fri, 9 Jun 2023 13:59:04 +0800 Subject: [PATCH] =?UTF-8?q?mall=20+=20product=EF=BC=9Areview=20=E8=AF=84?= =?UTF-8?q?=E8=AE=BA=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/spu/ProductSpuController.java | 17 +++++- .../app/spu/AppProductSpuController.java | 27 ++++++++- .../property/ProductPropertyDO.java | 8 +-- .../property/ProductPropertyValueDO.java | 8 +-- .../mysql/comment/ProductCommentMapper.java | 1 + .../category/ProductCategoryServiceImpl.java | 4 +- .../comment/ProductCommentServiceImpl.java | 19 +++--- .../service/sku/ProductSkuServiceImpl.java | 15 +++-- .../service/spu/ProductSpuService.java | 34 +++-------- .../service/spu/ProductSpuServiceImpl.java | 59 ++----------------- .../ProductCommentServiceImplTest.java | 1 + .../api/order/dto/TradeOrderRespDTO.java | 15 ++--- .../DeliveryExpressTemplateController.java | 1 - .../service/order/TradeOrderServiceImpl.java | 2 + 14 files changed, 92 insertions(+), 119 deletions(-) diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/ProductSpuController.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/ProductSpuController.java index 184a44f7e..0df57ca4f 100755 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/ProductSpuController.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/ProductSpuController.java @@ -6,7 +6,9 @@ import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; import cn.iocoder.yudao.module.product.controller.admin.spu.vo.*; import cn.iocoder.yudao.module.product.convert.spu.ProductSpuConvert; +import cn.iocoder.yudao.module.product.dal.dataobject.sku.ProductSkuDO; import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuDO; +import cn.iocoder.yudao.module.product.service.sku.ProductSkuService; import cn.iocoder.yudao.module.product.service.spu.ProductSpuService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -22,8 +24,10 @@ import java.io.IOException; import java.util.List; import java.util.Map; +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.SPU_NOT_EXISTS; /** * 商品 SPU 相关接口 @@ -38,6 +42,8 @@ public class ProductSpuController { @Resource private ProductSpuService productSpuService; + @Resource + private ProductSkuService productSkuService; @PostMapping("/create") @Operation(summary = "创建商品 SPU") @@ -58,7 +64,7 @@ public class ProductSpuController { @Operation(summary = "更新商品 SPU Status") @PreAuthorize("@ss.hasPermission('product:spu:update')") public CommonResult updateStatus(@Valid @RequestBody ProductSpuUpdateStatusReqVO updateReqVO) { - productSpuService.updateStatus(updateReqVO); + productSpuService.updateSpuStatus(updateReqVO); return success(true); } @@ -76,7 +82,14 @@ public class ProductSpuController { @Parameter(name = "id", description = "编号", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('product:spu:query')") public CommonResult getSpuDetail(@RequestParam("id") Long id) { - return success(productSpuService.getSpuDetail(id)); + // 获得商品 SPU + ProductSpuDO spu = productSpuService.getSpu(id); + if (spu == null) { + throw exception(SPU_NOT_EXISTS); + } + // 查询商品 SKU + List skus = productSkuService.getSkuListBySpuId(spu.getId()); + return success(ProductSpuConvert.INSTANCE.convertForSpuDetailRespVO(spu, skus)); } @GetMapping("/get-simple-list") diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/spu/AppProductSpuController.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/spu/AppProductSpuController.java index 49f9524f0..693e8e911 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/spu/AppProductSpuController.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/spu/AppProductSpuController.java @@ -6,7 +6,11 @@ import cn.iocoder.yudao.module.product.controller.app.spu.vo.AppProductSpuDetail import cn.iocoder.yudao.module.product.controller.app.spu.vo.AppProductSpuPageItemRespVO; import cn.iocoder.yudao.module.product.controller.app.spu.vo.AppProductSpuPageReqVO; import cn.iocoder.yudao.module.product.convert.spu.ProductSpuConvert; +import cn.iocoder.yudao.module.product.dal.dataobject.sku.ProductSkuDO; import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuDO; +import cn.iocoder.yudao.module.product.enums.spu.ProductSpuStatusEnum; +import cn.iocoder.yudao.module.product.service.property.ProductPropertyValueService; +import cn.iocoder.yudao.module.product.service.sku.ProductSkuService; import cn.iocoder.yudao.module.product.service.spu.ProductSpuService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -19,8 +23,12 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.validation.Valid; +import java.util.List; +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.SPU_NOT_ENABLE; +import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.SPU_NOT_EXISTS; @Tag(name = "用户 APP - 商品 SPU") @RestController @@ -30,6 +38,10 @@ public class AppProductSpuController { @Resource private ProductSpuService productSpuService; + @Resource + private ProductSkuService productSkuService; + @Resource + private ProductPropertyValueService productPropertyValueService; @GetMapping("/page") @Operation(summary = "获得商品 SPU 分页") @@ -38,12 +50,23 @@ public class AppProductSpuController { return success(ProductSpuConvert.INSTANCE.convertPageForGetSpuPage(pageResult)); } - // TODO 芋艿:等会看看 @GetMapping("/get-detail") @Operation(summary = "获得商品 SPU 明细") @Parameter(name = "id", description = "编号", required = true) public CommonResult getSpuDetail(@RequestParam("id") Long id) { - return success(productSpuService.getAppProductSpuDetail(id)); + // 获得商品 SPU + ProductSpuDO spu = productSpuService.getSpu(id); + if (spu == null) { + throw exception(SPU_NOT_EXISTS); + } + if (!ProductSpuStatusEnum.isEnable(spu.getStatus())) { + throw exception(SPU_NOT_ENABLE); + } + + // 查询商品 SKU + List skus = productSkuService.getSkuListBySpuId(spu.getId()); + // 拼接 + return success(ProductSpuConvert.INSTANCE.convertForGetSpuDetail(spu, skus)); } } diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/property/ProductPropertyDO.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/property/ProductPropertyDO.java index e7e3c8ba6..8cc646bd5 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/property/ProductPropertyDO.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/property/ProductPropertyDO.java @@ -22,13 +22,13 @@ import lombok.*; public class ProductPropertyDO extends BaseDO { /** - * 默认属性id + * SPU 单规格时,默认属性 id */ - public static final Long PROPERTY_ID = 0L; + public static final Long ID_DEFAULT = 0L; /** - * 默认属性名字 + * SPU 单规格时,默认属性名字 */ - public static final String PROPERTY_NAME = "默认"; + public static final String NAME_DEFAULT = "默认"; /** * 主键 diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/property/ProductPropertyValueDO.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/property/ProductPropertyValueDO.java index a632c8f11..cefa2d958 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/property/ProductPropertyValueDO.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/property/ProductPropertyValueDO.java @@ -23,13 +23,13 @@ import lombok.*; public class ProductPropertyValueDO extends BaseDO { /** - * 默认属性值id + * SPU 单规格时,默认属性值 id */ - public static final Long VALUE_ID = 0L; + public static final Long ID_DEFAULT = 0L; /** - * 默认属性值名字 + * SPU 单规格时,默认属性值名字 */ - public static final String VALUE_NAME = "默认"; + public static final String NAME_DEFAULT = "默认"; /** * 主键 diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/comment/ProductCommentMapper.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/comment/ProductCommentMapper.java index b010167cc..f25decbf8 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/comment/ProductCommentMapper.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/comment/ProductCommentMapper.java @@ -35,6 +35,7 @@ public interface ProductCommentMapper extends BaseMapperX { .orderByDesc(ProductCommentDO::getId)); } + // TODO 芋艿:在看看这块 static void appendTabQuery(LambdaQueryWrapperX queryWrapper, Integer type) { // 构建好评查询语句 if (ObjectUtil.equal(type, AppCommentPageReqVO.FAVOURABLE_COMMENT)) { diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/category/ProductCategoryServiceImpl.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/category/ProductCategoryServiceImpl.java index 7e64c802d..7709f21a1 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/category/ProductCategoryServiceImpl.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/category/ProductCategoryServiceImpl.java @@ -68,8 +68,8 @@ public class ProductCategoryServiceImpl implements ProductCategoryService { throw exception(CATEGORY_EXISTS_CHILDREN); } // 校验分类是否绑定了 SPU - Long count = productSpuService.getSpuCountByCategoryId(id); - if (0 != count) { + Long spuCount = productSpuService.getSpuCountByCategoryId(id); + if (spuCount > 0) { throw exception(CATEGORY_HAVE_BIND_SPU); } // 删除 diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/comment/ProductCommentServiceImpl.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/comment/ProductCommentServiceImpl.java index edec1c651..a54afe2b3 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/comment/ProductCommentServiceImpl.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/comment/ProductCommentServiceImpl.java @@ -31,6 +31,7 @@ import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionU import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.*; import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.ORDER_NOT_FOUND; +// TODO @芋艿:详细 review 下 /** * 商品评论 Service 实现类 * @@ -73,13 +74,17 @@ public class ProductCommentServiceImpl implements ProductCommentService { public Map getCommentPageTabsCount(Long spuId, Boolean visible) { Map countMap = new HashMap<>(4); // 查询商品 id = spuId 的所有评论数量 - countMap.put(AppCommentPageReqVO.ALL_COUNT, productCommentMapper.selectTabCount(spuId, visible, AppCommentPageReqVO.ALL)); + countMap.put(AppCommentPageReqVO.ALL_COUNT, + productCommentMapper.selectTabCount(spuId, visible, AppCommentPageReqVO.ALL)); // 查询商品 id = spuId 的所有好评数量 - countMap.put(AppCommentPageReqVO.FAVOURABLE_COMMENT_COUNT, productCommentMapper.selectTabCount(spuId, visible, AppCommentPageReqVO.FAVOURABLE_COMMENT)); + countMap.put(AppCommentPageReqVO.FAVOURABLE_COMMENT_COUNT, + productCommentMapper.selectTabCount(spuId, visible, AppCommentPageReqVO.FAVOURABLE_COMMENT)); // 查询商品 id = spuId 的所有中评数量 - countMap.put(AppCommentPageReqVO.MEDIOCRE_COMMENT_COUNT, productCommentMapper.selectTabCount(spuId, visible, AppCommentPageReqVO.MEDIOCRE_COMMENT)); + countMap.put(AppCommentPageReqVO.MEDIOCRE_COMMENT_COUNT, + productCommentMapper.selectTabCount(spuId, visible, AppCommentPageReqVO.MEDIOCRE_COMMENT)); // 查询商品 id = spuId 的所有差评数量 - countMap.put(AppCommentPageReqVO.NEGATIVE_COMMENT_COUNT, productCommentMapper.selectTabCount(spuId, visible, AppCommentPageReqVO.NEGATIVE_COMMENT)); + countMap.put(AppCommentPageReqVO.NEGATIVE_COMMENT_COUNT, + productCommentMapper.selectTabCount(spuId, visible, AppCommentPageReqVO.NEGATIVE_COMMENT)); return countMap; } @@ -101,13 +106,14 @@ public class ProductCommentServiceImpl implements ProductCommentService { @Override public void createComment(ProductCommentDO productComment, Boolean system) { + // TODO @puhui999:这里不区分是否为 system;直接都校验 if (!system) { - // TODO 判断订单是否存在 fix + // TODO 判断订单是否存在 fix; + // TODO @puhui999:改成 order 那有个 comment 接口,哪里校验下;商品评论这里不校验订单是否存在哈 TradeOrderRespDTO order = tradeOrderApi.getOrder(productComment.getOrderId()); if (null == order) { throw exception(ORDER_NOT_FOUND); } - // TODO 判断 SPU 是否存在 fix ProductSpuDO spu = productSpuService.getSpu(productComment.getSpuId()); if (null == spu) { throw exception(SPU_NOT_EXISTS); @@ -147,5 +153,4 @@ public class ProductCommentServiceImpl implements ProductCommentService { return productComment; } - } diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/sku/ProductSkuServiceImpl.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/sku/ProductSkuServiceImpl.java index 6b317bf22..3f77fbe8d 100755 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/sku/ProductSkuServiceImpl.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/sku/ProductSkuServiceImpl.java @@ -83,21 +83,20 @@ public class ProductSkuServiceImpl implements ProductSkuService { if (CollUtil.isEmpty(skus)) { throw exception(SKU_NOT_EXISTS); } - // 单规格处理 + // 单规格,赋予单规格默认属性 if (ObjectUtil.equal(specType, false)) { ProductSkuCreateOrUpdateReqVO skuVO = skus.get(0); - // 赋予单规格默认属性 List properties = new ArrayList<>(); ProductSkuBaseVO.Property property = new ProductSkuBaseVO.Property(); - property.setPropertyId(ProductPropertyDO.PROPERTY_ID); - property.setPropertyName(ProductPropertyDO.PROPERTY_NAME); - property.setValueId(ProductPropertyValueDO.VALUE_ID); - property.setValueName(ProductPropertyValueDO.VALUE_NAME); + property.setPropertyId(ProductPropertyDO.ID_DEFAULT); + property.setPropertyName(ProductPropertyDO.NAME_DEFAULT); + property.setValueId(ProductPropertyValueDO.ID_DEFAULT); + property.setValueName(ProductPropertyValueDO.NAME_DEFAULT); properties.add(property); skuVO.setProperties(properties); - // 单规格不需要后续的校验 - return; + return; // 单规格不需要后续的校验 } + // 1、校验属性项存在 Set propertyIds = skus.stream().filter(p -> p.getProperties() != null) // 遍历多个 Property 属性 diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuService.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuService.java index be6851191..102b5e1fa 100755 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuService.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuService.java @@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.product.service.spu; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.product.controller.admin.spu.vo.*; -import cn.iocoder.yudao.module.product.controller.app.spu.vo.AppProductSpuDetailRespVO; import cn.iocoder.yudao.module.product.controller.app.spu.vo.AppProductSpuPageReqVO; import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuDO; @@ -107,40 +106,25 @@ public interface ProductSpuService { void updateSpuStock(Map stockIncrCounts); /** - * 得到spu详细 + * 更新 SPU 状态 * - * @param id id - * @return {@link ProductSpuDetailRespVO} + * @param updateReqVO 更新请求 */ - ProductSpuDetailRespVO getSpuDetail(Long id); + void updateSpuStatus(ProductSpuUpdateStatusReqVO updateReqVO); /** - * 更新状态 + * 获取 SPU 列表标签对应的 Count 数量 * - * @param updateReqVO 更新请求签证官 - */ - void updateStatus(ProductSpuUpdateStatusReqVO updateReqVO); - - /** - * 获取spu列表标签对应的Count数量 - * - * @return {@link Map}<{@link Integer}, {@link Integer}> + * @return Count 数量 */ Map getTabsCount(); /** - * 通过分类 id 查询 spu 个数 + * 通过分类 categoryId 查询 SPU 个数 * - * @param id 分类 id - * @return spu + * @param categoryId 分类 categoryId + * @return SPU 数量 */ - Long getSpuCountByCategoryId(Long id); + Long getSpuCountByCategoryId(Long categoryId); - /** - * 通过 spu id 获取商品 SPU 明细 - * - * @param id id - * @return 用户 App - 商品 SPU 明细 - */ - AppProductSpuDetailRespVO getAppProductSpuDetail(Long id); } diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImpl.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImpl.java index 45097c3a6..297259509 100755 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImpl.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImpl.java @@ -7,21 +7,15 @@ import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.module.product.controller.admin.category.vo.ProductCategoryListReqVO; import cn.iocoder.yudao.module.product.controller.admin.sku.vo.ProductSkuCreateOrUpdateReqVO; import cn.iocoder.yudao.module.product.controller.admin.spu.vo.*; -import cn.iocoder.yudao.module.product.controller.app.spu.vo.AppProductSpuDetailRespVO; import cn.iocoder.yudao.module.product.controller.app.spu.vo.AppProductSpuPageReqVO; -import cn.iocoder.yudao.module.product.convert.sku.ProductSkuConvert; import cn.iocoder.yudao.module.product.convert.spu.ProductSpuConvert; import cn.iocoder.yudao.module.product.dal.dataobject.category.ProductCategoryDO; -import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyDO; -import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyValueDO; -import cn.iocoder.yudao.module.product.dal.dataobject.sku.ProductSkuDO; import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuDO; import cn.iocoder.yudao.module.product.dal.mysql.spu.ProductSpuMapper; import cn.iocoder.yudao.module.product.enums.spu.ProductSpuStatusEnum; import cn.iocoder.yudao.module.product.service.brand.ProductBrandService; import cn.iocoder.yudao.module.product.service.category.ProductCategoryService; import cn.iocoder.yudao.module.product.service.property.ProductPropertyValueService; -import cn.iocoder.yudao.module.product.service.property.bo.ProductPropertyValueDetailRespBO; import cn.iocoder.yudao.module.product.service.sku.ProductSkuService; import com.google.common.collect.Maps; import org.springframework.context.annotation.Lazy; @@ -114,9 +108,9 @@ public class ProductSpuServiceImpl implements ProductSpuService { spu.setPrice(getMinValue(skus, ProductSkuCreateOrUpdateReqVO::getPrice)); // sku 单价最低的商品的市场价格 spu.setMarketPrice(getMinValue(skus, ProductSkuCreateOrUpdateReqVO::getMarketPrice)); - // sku单价最低的商品的成本价格 + // sku 单价最低的商品的成本价格 spu.setCostPrice(getMinValue(skus, ProductSkuCreateOrUpdateReqVO::getCostPrice)); - // sku单价最低的商品的条形码 + // sku 单价最低的商品的条形码 spu.setBarCode(getMinValue(skus, ProductSkuCreateOrUpdateReqVO::getBarCode)); // skus 库存总数 spu.setStock(getSumValue(skus, ProductSkuCreateOrUpdateReqVO::getStock, Integer::sum)); @@ -213,21 +207,9 @@ public class ProductSpuServiceImpl implements ProductSpuService { stockIncrCounts.forEach((id, incCount) -> productSpuMapper.updateStock(id, incCount)); } - @Override - public ProductSpuDetailRespVO getSpuDetail(Long id) { - // 获得商品 SPU - ProductSpuDO spu = getSpu(id); - if (spu == null) { - throw exception(SPU_NOT_EXISTS); - } - // 查询商品 SKU - List skus = productSkuService.getSkuListBySpuId(spu.getId()); - return ProductSpuConvert.INSTANCE.convertForSpuDetailRespVO(spu, skus); - } - @Override @Transactional(rollbackFor = Exception.class) - public void updateStatus(ProductSpuUpdateStatusReqVO updateReqVO) { + public void updateSpuStatus(ProductSpuUpdateStatusReqVO updateReqVO) { // 校验存在 validateSpuExists(updateReqVO.getId()); @@ -258,39 +240,8 @@ public class ProductSpuServiceImpl implements ProductSpuService { } @Override - public Long getSpuCountByCategoryId(Long id) { - return productSpuMapper.selectCount(ProductSpuDO::getCategoryId, id); - } - - @Override - public AppProductSpuDetailRespVO getAppProductSpuDetail(Long id) { - // 获得商品 SPU - ProductSpuDO spu = getSpu(id); - if (spu == null) { - throw exception(SPU_NOT_EXISTS); - } - if (!ProductSpuStatusEnum.isEnable(spu.getStatus())) { - throw exception(SPU_NOT_ENABLE); - } - - // 查询商品 SKU - List skus = productSkuService.getSkuListBySpuId(spu.getId()); - List propertyValues = new ArrayList<>(); - // 单规格商品 赋予默认属性值 - if (ObjectUtil.equal(spu.getSpecType(), false)) { - ProductPropertyValueDetailRespBO respBO = new ProductPropertyValueDetailRespBO(); - respBO.setPropertyId(ProductPropertyDO.PROPERTY_ID); - respBO.setPropertyName(ProductPropertyDO.PROPERTY_NAME); - respBO.setValueId(ProductPropertyValueDO.VALUE_ID); - respBO.setValueName(ProductPropertyValueDO.VALUE_NAME); - propertyValues.add(respBO); - } else { - // 多规格商品则查询商品属性 - propertyValues = productPropertyValueService - .getPropertyValueDetailList(ProductSkuConvert.INSTANCE.convertPropertyValueIds(skus)); - } - // 拼接 - return ProductSpuConvert.INSTANCE.convertForGetSpuDetail(spu, skus, propertyValues); + public Long getSpuCountByCategoryId(Long categoryId) { + return productSpuMapper.selectCount(ProductSpuDO::getCategoryId, categoryId); } } diff --git a/yudao-module-mall/yudao-module-product-biz/src/test/java/cn/iocoder/yudao/module/product/service/comment/ProductCommentServiceImplTest.java b/yudao-module-mall/yudao-module-product-biz/src/test/java/cn/iocoder/yudao/module/product/service/comment/ProductCommentServiceImplTest.java index 24d912025..15ee74cfd 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/test/java/cn/iocoder/yudao/module/product/service/comment/ProductCommentServiceImplTest.java +++ b/yudao-module-mall/yudao-module-product-biz/src/test/java/cn/iocoder/yudao/module/product/service/comment/ProductCommentServiceImplTest.java @@ -34,6 +34,7 @@ import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; +// TODO 芋艿:单测详细 review 下 /** * {@link ProductCommentServiceImpl} 的单元测试类 * diff --git a/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/api/order/dto/TradeOrderRespDTO.java b/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/api/order/dto/TradeOrderRespDTO.java index b9d362407..27b0a8af1 100644 --- a/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/api/order/dto/TradeOrderRespDTO.java +++ b/yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/api/order/dto/TradeOrderRespDTO.java @@ -23,26 +23,24 @@ public class TradeOrderRespDTO { private Long id; /** * 订单流水号 - *

+ * * 例如说,1146347329394184195 */ private String no; /** * 订单类型 - *

+ * * 枚举 {@link TradeOrderTypeEnum} */ private Integer type; /** * 订单来源 - *

+ * * 枚举 {@link TerminalEnum} */ private Integer terminal; /** * 用户编号 - *

- * 关联 MemberUserDO 的 id 编号 */ private Long userId; /** @@ -55,7 +53,7 @@ public class TradeOrderRespDTO { private String userRemark; /** * 订单状态 - *

+ * * 枚举 {@link TradeOrderStatusEnum} */ private Integer status; @@ -73,7 +71,7 @@ public class TradeOrderRespDTO { private LocalDateTime cancelTime; /** * 取消类型 - *

+ * * 枚举 {@link TradeOrderCancelTypeEnum} */ private Integer cancelType; @@ -83,9 +81,6 @@ public class TradeOrderRespDTO { private String remark; /** * 是否评价 - *

- * true - 已评价 - * false - 未评价 */ private Boolean commentStatus; diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/DeliveryExpressTemplateController.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/DeliveryExpressTemplateController.java index 8f87e358e..5dc83682a 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/DeliveryExpressTemplateController.java +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/DeliveryExpressTemplateController.java @@ -70,7 +70,6 @@ public class DeliveryExpressTemplateController { return success(DeliveryExpressTemplateConvert.INSTANCE.convertList(list)); } - // TODO @puhui999:DeliveryExpressTemplateRespVO 搞个 simple 的哈 fix @GetMapping("/list-all-simple") @Operation(summary = "获取快递模版精简信息列表", description = "主要用于前端的下拉选项") public CommonResult> getSimpleTemplateList() { diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderServiceImpl.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderServiceImpl.java index 666841eee..7cd6fe87b 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderServiceImpl.java +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderServiceImpl.java @@ -100,6 +100,7 @@ public class TradeOrderServiceImpl implements TradeOrderService { private AdminUserApi adminUserApi; @Resource private NotifyMessageSendApi notifyMessageSendApi; + @Resource private TradeOrderProperties tradeOrderProperties; @@ -356,6 +357,7 @@ public class TradeOrderServiceImpl implements TradeOrderService { // TODO 芋艿:发送订单变化的消息 // TODO 芋艿:发送站内信 fix + // TODO @puhui999:使用 sendSingleMessageToMember 呀;走模版;不用判断模版是否存在哈 // 1、获取模版编码为 order_delivery 的模版,判断是否存在 存在放回 true if (!notifyMessageSendApi.validateNotifyTemplate("order_delivery")) { // 1、1 站内信模版不存在则创建模版