diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/ProjectInfo.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/ProjectInfo.java index 156bd38..963056e 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/ProjectInfo.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/ProjectInfo.java @@ -147,5 +147,18 @@ public class ProjectInfo extends BaseEntity { .brandId(projectInfoEditReq.getBrandId()) .build(); } - + /** + * 修改构造器 + */ + public static ProjectInfo editProductBuild(Long id, ProjectInfoSaveReq projectInfoSaveReq){ + return ProjectInfo.builder() + .id(id) + .name(projectInfoSaveReq.getProjectAddModel().getName()) + .brandId(projectInfoSaveReq.getProjectAddModel().getBrandId()) + .image(projectInfoSaveReq.getProjectAddModel().getImage()) + .status(projectInfoSaveReq.getProjectAddModel().getStatus()) + .type(projectInfoSaveReq.getProjectAddModel().getType()) + .ruleId(projectInfoSaveReq.getProjectAddModel().getRuleId()) + .build(); + } } diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/ProjectSkuInfo.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/ProjectSkuInfo.java index 9a28465..43f2350 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/ProjectSkuInfo.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/ProjectSkuInfo.java @@ -91,6 +91,18 @@ public class ProjectSkuInfo extends BaseEntity { .image(projectSkuInfoSaveReq.getImage()) .build(); } + /** + * 添加构造器 + */ + public static ProjectSkuInfo saveProductBuild(ProductSkuModel productSkuModel,Supplier projectId){ + return ProjectSkuInfo.builder() + .projectId(projectId.get()) + .sku(productSkuModel.getSku()) + .stock(productSkuModel.getStock()) + .price(productSkuModel.getPrice()) + .image(productSkuModel.getImage()) + .build(); + } /** * 修改构造器 diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProductSkuModel.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProductSkuModel.java index a9f2d88..df1334a 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProductSkuModel.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/ProductSkuModel.java @@ -20,6 +20,7 @@ import java.math.BigDecimal; @AllArgsConstructor public class ProductSkuModel { + /** sku */ @ApiModelProperty(name = "sku", value = "sku", required = true) private String sku; diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/TemplateAttributeGroupModel.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/TemplateAttributeGroupModel.java index 3258cc8..3629e13 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/TemplateAttributeGroupModel.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/TemplateAttributeGroupModel.java @@ -24,7 +24,7 @@ import java.util.function.Supplier; @AllArgsConstructor @EqualsAndHashCode(callSuper = true) public class TemplateAttributeGroupModel extends BaseEntity { - + private Long id; /** * 组名称 */ @@ -49,9 +49,9 @@ public class TemplateAttributeGroupModel extends BaseEntity { * @param attributeList * @return */ - public static TemplateAttributeGroupModel attributeGroupBuild(AttributeGroup attributeGroup, - Function> attributeList){ + public static TemplateAttributeGroupModel attributeGroupBuild(AttributeGroup attributeGroup, Function> attributeList){ return TemplateAttributeGroupModel.builder() + .id(attributeGroup.getId()) .groupName(attributeGroup.getName()) .attributeList(attributeList.apply(attributeGroup.getId())) .build(); diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/CategoryCommonElementResp.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/CategoryCommonElementResp.java index b69efda..52c5137 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/CategoryCommonElementResp.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/CategoryCommonElementResp.java @@ -26,7 +26,7 @@ public class CategoryCommonElementResp extends BaseEntity { private List templateAttributeGroupList; /** - * 共有属性 + * 共有属性 商品属性 */ private List templateAttributeList; diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/ProjectInfoController.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/ProjectInfoController.java index f1e3d62..ea62702 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/ProjectInfoController.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/ProjectInfoController.java @@ -120,8 +120,9 @@ public class ProjectInfoController extends BaseController { @Log(title = "商品信息", businessType = BusinessType.UPDATE) @PutMapping("/{id}") @ApiOperation("修改商品信息") - public Result edit(@PathVariable Long id, @RequestBody ProjectInfoEditReq projectInfoEditReq) { - return toAjax(projectInfoService.updateById(ProjectInfo.editBuild(id,projectInfoEditReq))); + public Result edit(@PathVariable Long id, @RequestBody ProjectInfoSaveReq projectInfoSaveReq) { + projectInfoService.updateProductById(id,projectInfoSaveReq); + return Result.success(); } /** diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/ProjectInfoService.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/ProjectInfoService.java index 0924c9e..b0712d9 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/ProjectInfoService.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/ProjectInfoService.java @@ -3,6 +3,7 @@ package com.muyu.product.service; import java.util.List; import com.muyu.product.domain.ProjectInfo; import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.product.domain.req.ProjectInfoEditReq; import com.muyu.product.domain.req.ProjectInfoSaveReq; import com.muyu.product.domain.resp.ProjectDetailResp; @@ -34,4 +35,12 @@ public interface ProjectInfoService extends IService { * @return 商品详情 */ ProjectDetailResp getDetailInfo (Long id); + + /** + * 修改 + * @param id + * @param projectInfoSaveReq + * @return + */ + void updateProductById(Long id, ProjectInfoSaveReq projectInfoSaveReq); } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/CategoryInfoServiceImpl.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/CategoryInfoServiceImpl.java index eee508a..cdd4587 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/CategoryInfoServiceImpl.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/CategoryInfoServiceImpl.java @@ -399,9 +399,11 @@ public class CategoryInfoServiceImpl extends ServiceImpl cateGoryIdList = new ArrayList<>(); - getParentIdListByCateGoryId(cateGoryIdList, cateGoryId); - // 取出和品类相关联的属性组关系 - 中间表 + getParentIdListByCateGoryId(cateGoryIdList, cateGoryId); //品类信息id + // 取出和品类相关联的属性组关系 - 中间表 as_category_attribute_group and category_info LambdaQueryWrapper asCategoryAttributeGroupLambdaQueryWrapper = new LambdaQueryWrapper<>(){{ in(AsCategoryAttributeGroup::getCategoryId, cateGoryIdList); }}; + // 属性组中间表属性组id List categoryAttributeGroupList = asCategoryAttributeGroupService.list(asCategoryAttributeGroupLambdaQueryWrapper); + //属性组表信息 属性与组中间表 List attributeGroupModelList = categoryAttributeGroupList.stream() - .map(AsCategoryAttributeGroup::getAttributeGroupId) + .map(AsCategoryAttributeGroup::getAttributeGroupId)//属性组中间表 取出属性组表去重id-getAttributeGroupId .distinct() .map(attributeGroupId -> TemplateAttributeGroupModel.attributeGroupBuild( - attributeGroupService.getById(attributeGroupId), + attributeGroupService.getById(attributeGroupId),//用去重后的属性组表id查找 attributeGroup applyAttributeGroupId -> { LambdaQueryWrapper asAttributeGroupQueryWrapper = new LambdaQueryWrapper<>() {{ eq(AsAttributeGroup::getGroupId, applyAttributeGroupId); }}; - List attributeIdList = asAttributeGroupService.list(asAttributeGroupQueryWrapper).stream() + List attributeIdList = asAttributeGroupService.list(asAttributeGroupQueryWrapper).stream()//取出属性与组中间表的商品属性id .map(AsAttributeGroup::getAttributeId) .toList(); if (attributeIdList.isEmpty()) { return new ArrayList<>(); } - return attributeInfoService.listByIds(attributeIdList).stream() + return attributeInfoService.listByIds(attributeIdList).stream()//取出属性与组中间表的商品属性id查找商品属性表 .map(AttributeInfo::buildTemplateModel) .toList(); } @@ -443,7 +447,7 @@ public class CategoryInfoServiceImpl extends ServiceImpl attributeIdSet = new HashSet<>(); + Set attributeIdSet = new HashSet<>(); // 商品属性表id // 获取组内所有的属性Id if (!attributeGroupModelList.isEmpty()){ attributeIdSet.addAll( @@ -453,26 +457,25 @@ public class CategoryInfoServiceImpl extends ServiceImpl templateAttributeModelList = new ArrayList<>(); LambdaQueryWrapper categoryAttributeQueryWrapper = new LambdaQueryWrapper<>(); categoryAttributeQueryWrapper.in(AsCategoryAttribute::getCategoryId, cateGoryIdList); - List asCategoryAttributeList = asCategoryAttributeService.list(categoryAttributeQueryWrapper); + List asCategoryAttributeList = asCategoryAttributeService.list(categoryAttributeQueryWrapper); //品类属性中间表 if (asCategoryAttributeList != null && !asCategoryAttributeList.isEmpty()){ - List templateAttributeIdList = asCategoryAttributeList.stream() + List templateAttributeIdList = asCategoryAttributeList.stream() //商品属性表id 过滤后的attribute_info品类属性表id .map(AsCategoryAttribute::getAttributeId) .filter(templateAttributeId -> !attributeIdSet.contains(templateAttributeId)) .toList(); - templateAttributeModelList = attributeInfoService.listByIds(templateAttributeIdList).stream() + templateAttributeModelList = attributeInfoService.listByIds(templateAttributeIdList).stream()// 过滤后的品类属性中间表的商品属性id查找商品属性 .map(AttributeInfo::buildTemplateModel) .toList(); } - List attributeModelList = new ArrayList<>(); if (!templateAttributeModelList.isEmpty()){ attributeIdSet.addAll( - templateAttributeModelList.stream().map(TemplateAttributeModel::getId).toList() + templateAttributeModelList.stream().map(TemplateAttributeModel::getId).toList()//商品属性表id ); } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/ProjectInfoServiceImpl.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/ProjectInfoServiceImpl.java index 448a3d9..279d26d 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/ProjectInfoServiceImpl.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/ProjectInfoServiceImpl.java @@ -4,10 +4,12 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import com.alibaba.nacos.shaded.com.google.common.base.Supplier; import com.muyu.common.core.utils.ObjUtils; import com.muyu.common.security.utils.SecurityUtils; import com.muyu.product.domain.*; import com.muyu.product.domain.model.*; +import com.muyu.product.domain.req.ProjectInfoEditReq; import com.muyu.product.domain.req.ProjectInfoSaveReq; import com.muyu.product.domain.resp.CategoryCommonElementResp; import com.muyu.product.domain.resp.ProjectDetailResp; @@ -229,4 +231,41 @@ public class ProjectInfoServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(AsProductAttributeInfo::getProductId,id); + this.asProductAttributeInfoService.remove(wrapper); + //添加商品属性中间表 + asProductAttributeInfoService.saveBatch(projectInfoSaveReq.getAttrValueList().stream().map(attrValueModel -> AsProductAttributeInfo.attrValueModelBuild(attrValueModel,()-> id)).toList()); + } + //修改商品规格sku表 + private void updSku(Long id, ProjectInfoSaveReq projectInfoSaveReq) { + //删除商品规格sku中间表 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ProjectSkuInfo::getProjectId,id); + this.projectSkuInfoService.remove(queryWrapper); + //两家商品规格中间表 + projectSkuInfoService.saveBatch(projectInfoSaveReq.getProductSkuList().stream().map(productSkuModel -> ProjectSkuInfo.saveProductBuild(productSkuModel,()->id)).toList()); + } }