diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AsCategoryAttribute.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AsCategoryAttribute.java index 3c37f9f..1423b22 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AsCategoryAttribute.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AsCategoryAttribute.java @@ -3,6 +3,7 @@ package com.muyu.product.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.muyu.product.domain.base.CategoryBase; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -25,7 +26,7 @@ import com.muyu.common.core.web.domain.BaseEntity; @TableName("as_category_attribute") @EqualsAndHashCode(callSuper = true) @ApiModel(value = "AsCategoryAttribute", description = "品类属性中间") -public class AsCategoryAttribute extends BaseEntity { +public class AsCategoryAttribute extends BaseEntity implements CategoryBase { private static final long serialVersionUID = 1L; @@ -51,4 +52,9 @@ public class AsCategoryAttribute extends BaseEntity { .attributeId(attributeId) .build(); } + + @Override + public Long getBaseId () { + return this.attributeId; + } } diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AsCategoryAttributeGroup.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AsCategoryAttributeGroup.java index 35ab9f5..1dd2789 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AsCategoryAttributeGroup.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AsCategoryAttributeGroup.java @@ -3,6 +3,7 @@ package com.muyu.product.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.muyu.product.domain.base.CategoryBase; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -25,7 +26,7 @@ import com.muyu.common.core.web.domain.BaseEntity; @TableName("as_category_attribute_group") @EqualsAndHashCode(callSuper = true) @ApiModel(value = "AsCategoryAttributeGroup", description = "品类属性组中间") -public class AsCategoryAttributeGroup extends BaseEntity { +public class AsCategoryAttributeGroup extends BaseEntity implements CategoryBase { private static final long serialVersionUID = 1L; @@ -51,4 +52,9 @@ public class AsCategoryAttributeGroup extends BaseEntity { .categoryId(categoryInfoId) .build(); } + + @Override + public Long getBaseId () { + return this.attributeGroupId; + } } diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AsCategoryBrand.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AsCategoryBrand.java index b64d751..e40bb11 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AsCategoryBrand.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AsCategoryBrand.java @@ -3,6 +3,7 @@ package com.muyu.product.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.muyu.product.domain.base.CategoryBase; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -25,7 +26,7 @@ import com.muyu.common.core.web.domain.BaseEntity; @TableName("as_category_brand") @EqualsAndHashCode(callSuper = true) @ApiModel(value = "AsCategoryBrand", description = "品类品牌中间") -public class AsCategoryBrand extends BaseEntity { +public class AsCategoryBrand extends BaseEntity implements CategoryBase { private static final long serialVersionUID = 1L; @@ -50,4 +51,9 @@ public class AsCategoryBrand extends BaseEntity { .categoryId(categoryInfoId) .build(); } + + @Override + public Long getBaseId () { + return this.brandId; + } } diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/base/CategoryBase.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/base/CategoryBase.java new file mode 100644 index 0000000..ae3b33c --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/base/CategoryBase.java @@ -0,0 +1,11 @@ +package com.muyu.product.domain.base; + +/** + * @author DongZl + * @description: attribute基础方法 + * @Date 2024-3-1 下午 02:28 + */ +public interface CategoryBase { + + public Long getBaseId(); +} 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 b3e704a..b90a88c 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 @@ -2,10 +2,13 @@ package com.muyu.product.service.impl; import java.util.ArrayList; import java.util.List; -import java.util.Objects; +import java.util.function.Function; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.IService; import com.muyu.common.core.utils.ObjUtils; import com.muyu.product.domain.*; +import com.muyu.product.domain.base.CategoryBase; import com.muyu.product.domain.model.CategoryInfoSaveModel; import com.muyu.product.domain.resp.CategoryParentCommonElementResp; import com.muyu.product.service.*; @@ -219,6 +222,40 @@ public class CategoryInfoServiceImpl extends ServiceImpl List getCommon(Long categoryId,IService iService,IService bsiService){ + List list = new ArrayList(); + QueryWrapper asQueryWrapper = new QueryWrapper<>(); + asQueryWrapper.eq("category_id", categoryId); + List asList = iService.list(asQueryWrapper); + if (asList != null && !asList.isEmpty()){ + List baseIdList = asList.stream() + .map(as -> { + if (as instanceof CategoryBase categoryBase){ + return categoryBase.getBaseId(); + } + return null; + }) + .toList(); + list.addAll(bsiService.listByIds(baseIdList)); + } + CategoryInfo categoryInfo = this.getById(categoryId); + if (categoryInfo.getParentId() != 0){ + if (list.isEmpty()){ + list.addAll(getCommon(categoryInfo.getParentId(), iService, bsiService)); + }else { + List commonList = getCommon(categoryInfo.getParentId(), iService, bsiService); + commonList.forEach(common -> { + if (!list.contains(common)){ + list.add(common); + } + }); + } + } + return list; + } + /** * 通过品类ID获取父级以上的属性、属性组、品牌集合 * @@ -229,9 +266,9 @@ public class CategoryInfoServiceImpl extends ServiceImpl