diff --git a/DirectoryV3.xml b/DirectoryV3.xml
new file mode 100644
index 0000000..d817e9c
--- /dev/null
+++ b/DirectoryV3.xml
@@ -0,0 +1,6 @@
+
+
+
+
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 4398726..02f9e3e 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
@@ -19,6 +19,7 @@ import lombok.experimental.SuperBuilder;
* @author DongZeLiang
* @date 2024-02-27
*/
+
@Data
@SuperBuilder
@NoArgsConstructor
@@ -52,4 +53,15 @@ public class AsCategoryAttribute extends BaseEntity {
.attributeId(attributeId)
.build();
}
+ public static AsCategoryAttribute buildCategoryAttribute(Long categoryInfoId,Long attributeId){
+ return AsCategoryAttribute.builder ()
+ .categoryId(categoryInfoId)
+ .attributeId(attributeId)
+ .build ();
+ }
+ public static AsCategoryAttribute buildCategoryAttribute(Long categoryInfoId){
+ return AsCategoryAttribute.builder ()
+ .categoryId(categoryInfoId)
+ .build ();
+ }
}
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 09b658b..d898894 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
@@ -52,4 +52,11 @@ public class AsCategoryAttributeGroup extends BaseEntity {
.attributeGroupId(attributeGroupId)
.build();
}
+
+
+ public static AsCategoryAttributeGroup categoryAttributeGroup(Long categoryId){
+ return AsCategoryAttributeGroup.builder()
+ .categoryId(categoryId)
+ .build();
+ }
}
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 2d6f3a4..fd4febd 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
@@ -7,11 +7,9 @@ import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.NoArgsConstructor;
+import lombok.*;
import lombok.experimental.SuperBuilder;
+import org.springframework.beans.factory.annotation.Autowired;
/**
* 品类品牌中间对象 as_category_brand
@@ -30,11 +28,11 @@ public class AsCategoryBrand extends BaseEntity {
private static final long serialVersionUID = 1L;
+
/** 主键 */
@TableId(value = "id",type = IdType.AUTO)
@ApiModelProperty(name = "主键", value = "主键")
private Long id;
-
/** 品类id */
@Excel(name = "品类id")
@ApiModelProperty(name = "品类id", value = "品类id", required = true)
@@ -51,4 +49,10 @@ public class AsCategoryBrand extends BaseEntity {
.brandId(brandId)
.build();
}
+ public static AsCategoryBrand categoryBrand(Long categoryId){
+ return AsCategoryBrand.builder ()
+ .categoryId(categoryId)
+ .build ();
+ }
+
}
diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AttributeInfo.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AttributeInfo.java
index 32e518a..d445d7e 100644
--- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AttributeInfo.java
+++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AttributeInfo.java
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
+import com.muyu.product.domain.model.TemplateAttributeModel;
import com.muyu.product.domain.req.AttributeInfoEditReq;
import com.muyu.product.domain.req.AttributeInfoQueryReq;
import com.muyu.product.domain.req.AttributeInfoSaveReq;
@@ -49,6 +50,15 @@ public class AttributeInfo extends BaseEntity {
private String name;
+
+ public TemplateAttributeModel buildTemplateModel(){
+ return TemplateAttributeModel.builder()
+ .id(this.getId())
+ .code(this.getCode())
+ .name(this.getName())
+ .build();
+ }
+
/**
* 查询构造器
*/
diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/RuleAttrInfo.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/RuleAttrInfo.java
index 7922497..2360527 100644
--- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/RuleAttrInfo.java
+++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/RuleAttrInfo.java
@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
+import com.muyu.product.domain.model.RuleAttrAddModel;
+import com.muyu.product.domain.model.RuleInfoAddModel;
import com.muyu.product.domain.req.RuleAttrInfoEditReq;
import com.muyu.product.domain.req.RuleAttrInfoQueryReq;
import com.muyu.product.domain.req.RuleAttrInfoSaveReq;
@@ -16,6 +18,9 @@ import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
+import java.util.Date;
+import java.util.function.Supplier;
+
/**
* 规格详情对象 rule_attr_info
*
@@ -75,6 +80,7 @@ public class RuleAttrInfo extends BaseEntity {
.build();
}
+
/**
* 修改构造器
*/
@@ -87,4 +93,13 @@ public class RuleAttrInfo extends BaseEntity {
.build();
}
+ public static RuleAttrInfo addModelBuild(RuleAttrAddModel ruleAttrAddModel, Long ruleId, Supplier createBy) {
+ return RuleAttrInfo.builder()
+ .ruleId(ruleId)
+ .name(ruleAttrAddModel.getName())
+ .attrValue(String.join ( ",", ruleAttrAddModel.getValueList ()))
+ .createBy ( createBy.get ( ) )
+ .createTime ( new Date () )
+ .build();
+ }
}
diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/RuleInfo.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/RuleInfo.java
index 03c05a4..c170128 100644
--- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/RuleInfo.java
+++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/RuleInfo.java
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
+import com.muyu.product.domain.model.RuleInfoAddModel;
import com.muyu.product.domain.req.RuleInfoEditReq;
import com.muyu.product.domain.req.RuleInfoQueryReq;
import com.muyu.product.domain.req.RuleInfoSaveReq;
@@ -16,6 +17,9 @@ import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
+import java.util.Date;
+import java.util.function.Supplier;
+
/**
* 商品规格对象 rule_info
*
@@ -79,4 +83,18 @@ public class RuleInfo extends BaseEntity {
.build();
}
+
+ /**
+ * @param ruleInfoAddModel 添加模型
+ * @param supplier 创建者
+ * @return 规格对象
+ */
+ public static RuleInfo addModelBuild(RuleInfoAddModel ruleInfoAddModel, Supplier supplier){
+ return RuleInfo.builder ()
+ .name( ruleInfoAddModel.getName ( ) )
+ .status( ruleInfoAddModel.getStatus ( ) )
+ .createBy ( supplier.get () )
+ .createTime ( new Date () )
+ .build ();
+ }
}
diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/demo/Attribute.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/demo/Attribute.java
new file mode 100644
index 0000000..bf8138f
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/demo/Attribute.java
@@ -0,0 +1,17 @@
+package com.muyu.product.domain.demo;
+
+import lombok.Data;
+
+/**
+ * @ClassName Attribute
+ * @Description 描述
+ * @Author YunFei.Du
+ * @Date 2024/3/6 14:20
+ */
+@Data
+public class Attribute {
+ private Long id;
+ private String code;
+ private String attributeName;
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/demo/Group.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/demo/Group.java
new file mode 100644
index 0000000..8255073
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/demo/Group.java
@@ -0,0 +1,18 @@
+package com.muyu.product.domain.demo;
+
+import com.muyu.product.domain.AttributeInfo;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @ClassName Group
+ * @Description 描述
+ * @Author YunFei.Du
+ * @Date 2024/3/6 14:19
+ */
+@Data
+public class Group {
+ private String groupName;
+ private List< AttributeInfo > list;
+}
diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/demo/Project.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/demo/Project.java
new file mode 100644
index 0000000..1a2d24a
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/demo/Project.java
@@ -0,0 +1,39 @@
+package com.muyu.product.domain.demo;
+
+import com.muyu.common.core.web.domain.TreeEntity;
+import com.muyu.product.domain.AttributeGroup;
+import com.muyu.product.domain.AttributeInfo;
+import com.muyu.product.domain.ProjectInfo;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @ClassName AttributeGroup
+ * @Description 描述
+ * @Author YunFei.Du
+ * @Date 2024/3/6 14:13
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class Project extends TreeEntity {
+ /**
+ * 商品属性组
+ */
+ private List< AttributeGroup > attributeGroupList;
+ /**
+ * 商品属性
+ */
+ private List< ProjectInfo > projectInfoList;
+ /**
+ * 自有属性
+ */
+ private Long id;
+ private String code;
+ private String attributeGroupName;
+ private List< AttributeInfo > attributeList;
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/CategoryInfoEditModel.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/CategoryInfoEditModel.java
new file mode 100644
index 0000000..b03dd1e
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/CategoryInfoEditModel.java
@@ -0,0 +1,77 @@
+package com.muyu.product.domain.model;
+
+import com.muyu.common.core.web.domain.TreeEntity;
+import com.muyu.product.domain.req.CategoryInfoEditReq;
+import com.muyu.product.domain.req.CategoryInfoSaveReq;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.util.Date;
+import java.util.List;
+import java.util.function.Supplier;
+
+/**
+ * @ClassName CategoryInfoSaveModel
+ * @Description 描述
+ * @Author Xin.Yao
+ * @Date 2024/3/3 8:52
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class CategoryInfoEditModel extends TreeEntity {
+ private Long id;
+ private String name;
+ private String image;
+ private String start;
+ private String introduction;
+
+ /**
+ * 商品属性组关联ID
+ */
+ private List attributeGroupIdList;
+ /**
+ * 商品属性关联ID
+ */
+ private List attributeIdList;
+
+ /**
+ * 商品品牌组关联ID
+ */
+ private List brandIdList;
+
+ /**
+ * 修改构造器
+ */
+ public static CategoryInfoEditModel editBuild(Long id,CategoryInfoEditReq categoryInfoEditReq, Supplier supplier){
+ return CategoryInfoEditModel.builder()
+ .id ( id )
+ .name(categoryInfoEditReq.getName())
+ .image(categoryInfoEditReq.getImage())
+ .start(categoryInfoEditReq.getStart())
+ .introduction(categoryInfoEditReq.getIntroduction())
+ .parentId(categoryInfoEditReq.getParentId())
+ .attributeGroupIdList(categoryInfoEditReq.getAttributeGroupIdList())
+ .attributeIdList(categoryInfoEditReq.getAttributeIdList())
+ .brandIdList(categoryInfoEditReq.getBrandIdList())
+ .createBy(supplier.get())
+ .createTime(new Date())
+ .build();
+ }
+ public static CategoryInfoEditReq editBuild1(CategoryInfoEditReq categoryInfoEditReq,Supplier supplier){
+ return CategoryInfoEditReq.builder ()
+ .name ( categoryInfoEditReq.getName () )
+ .image ( categoryInfoEditReq.getImage ( ) )
+ .start ( categoryInfoEditReq.getStart () )
+ .introduction ( categoryInfoEditReq.getIntroduction () )
+ .parentId ( categoryInfoEditReq.getParentId () )
+ .createBy ( supplier.get () )
+ .createTime ( new Date () )
+ .build ();
+ }
+}
diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/RuleAttrAddModel.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/RuleAttrAddModel.java
new file mode 100644
index 0000000..6690947
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/RuleAttrAddModel.java
@@ -0,0 +1,46 @@
+package com.muyu.product.domain.model;
+
+import com.muyu.common.core.web.domain.TreeEntity;
+import com.muyu.product.domain.RuleAttrInfo;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @ClassName RuleAttrAddModel
+ * @Description 规格属性,添加模型
+ * @Author YunFei.Du
+ * @Date 2024/3/4 14:41
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@SuperBuilder
+@EqualsAndHashCode(callSuper = true)
+public class RuleAttrAddModel extends TreeEntity {
+
+ /**
+ * 规格属性名称
+ */
+ private String name;
+
+ private Long ruleId;
+ /**
+ * 规格属性值集合
+ */
+
+ private List valueList;
+
+ public static RuleAttrAddModel infoBuild (RuleAttrInfo ruleAttrInfo) {
+ return RuleAttrAddModel.builder()
+ .name(ruleAttrInfo.getName())
+ .ruleId( ruleAttrInfo.getRuleId ( ) )
+ .valueList( Arrays.stream(ruleAttrInfo.getAttrValue().split(",")).toList())
+ .build();
+ }
+}
diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/RuleInfoAddModel.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/RuleInfoAddModel.java
new file mode 100644
index 0000000..757e0f9
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/RuleInfoAddModel.java
@@ -0,0 +1,52 @@
+package com.muyu.product.domain.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.muyu.common.core.annotation.Excel;
+import com.muyu.common.core.web.domain.TreeEntity;
+import com.muyu.product.domain.RuleAttrInfo;
+import com.muyu.product.domain.req.RuleInfoSaveReq;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.util.List;
+
+/**
+ * @ClassName RuleInfoAddModel
+ * @Description 规格保存模块
+ * @Author YunFei.Du
+ * @Date 2024/3/4 16:29
+ */
+
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@TableName("rule_info")
+@EqualsAndHashCode(callSuper = true)
+public class RuleInfoAddModel extends TreeEntity {
+
+ /** 规格名称 */
+ private String name;
+
+ /** 规格状态 */
+ private String status;
+
+ /**
+ * 规格属性集合
+ */
+ private List< RuleAttrAddModel > ruleAttrList;
+
+ public static RuleInfoAddModel saveReqBuild(RuleInfoSaveReq req){
+ return RuleInfoAddModel.builder ()
+ .name ( req.getName ( ) )
+ .status( req.getStatus ( ) )
+ .ruleAttrList(req.getRuleAttrList ())
+ .build ();
+ }
+}
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
new file mode 100644
index 0000000..96fd807
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/TemplateAttributeGroupModel.java
@@ -0,0 +1,60 @@
+package com.muyu.product.domain.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.muyu.common.core.utils.StringUtils;
+import com.muyu.common.core.web.domain.BaseEntity;
+import com.muyu.product.domain.AttributeGroup;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.util.List;
+import java.util.function.Function;
+
+/**
+ * @ClassName
+ * @Description 共有属性组
+ * @Author YunFei.Du
+ * @Date 2024/3/6 14:31
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class TemplateAttributeGroupModel extends BaseEntity {
+ /**
+ * 组名称
+ */
+ private String groupName;
+ /**
+ * 属性值下属性集合
+ */
+
+ private List attributeList;
+ /**
+ * 是否有效
+ * @return
+ */
+ public boolean isEffective(){
+ return StringUtils.isNotEmpty(groupName) && attributeList != null && !attributeList.isEmpty();
+ }
+
+
+ /**
+ *
+ * @param attributeGroup
+ * @param attributeList
+ * @return
+ */
+ public static TemplateAttributeGroupModel attributeGroupBuild(AttributeGroup attributeGroup,
+ Function> attributeList){
+ return TemplateAttributeGroupModel.builder()
+ .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/model/TemplateAttributeModel.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/TemplateAttributeModel.java
new file mode 100644
index 0000000..4f8e6bb
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/TemplateAttributeModel.java
@@ -0,0 +1,38 @@
+package com.muyu.product.domain.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.muyu.common.core.web.domain.BaseEntity;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * @ClassName
+ * @Description 共有属性
+ * @Author YunFei.Du
+ * @Date 2024/3/6 14:31
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class TemplateAttributeModel extends BaseEntity {
+
+ /**
+ * 主键
+ */
+ private Long id;
+
+ /**
+ * 属性名称
+ */
+ private String name;
+
+ /**
+ * 编码
+ */
+ private String code;
+}
diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/CategoryInfoEditReq.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/CategoryInfoEditReq.java
index 7c353a4..d3bf056 100644
--- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/CategoryInfoEditReq.java
+++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/CategoryInfoEditReq.java
@@ -8,6 +8,8 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
+import java.util.List;
+
/**
* 品类信息对象 category_info
*
@@ -39,4 +41,8 @@ public class CategoryInfoEditReq extends TreeEntity {
@ApiModelProperty(name = "介绍", value = "介绍")
private String introduction;
+ private List attributeGroupIdList;
+ private List attributeIdList;
+ private List brandIdList;
+
}
diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/RuleInfoSaveReq.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/RuleInfoSaveReq.java
index 09d5f9a..f332393 100644
--- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/RuleInfoSaveReq.java
+++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/RuleInfoSaveReq.java
@@ -1,6 +1,7 @@
package com.muyu.product.domain.req;
import com.muyu.common.core.web.domain.BaseEntity;
+import com.muyu.product.domain.model.RuleAttrAddModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
@@ -8,6 +9,8 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
+import java.util.List;
+
/**
* 商品规格对象 rule_info
*
@@ -38,4 +41,8 @@ public class RuleInfoSaveReq extends BaseEntity {
@ApiModelProperty(name = "规格状态", value = "规格状态")
private String status;
+ /**
+ * 规格属性集合
+ */
+ private List< RuleAttrAddModel > ruleAttrList;
}
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
new file mode 100644
index 0000000..07956fc
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/CategoryCommonElementResp.java
@@ -0,0 +1,38 @@
+package com.muyu.product.domain.resp;
+
+import com.muyu.common.core.web.domain.BaseEntity;
+import com.muyu.product.domain.model.TemplateAttributeGroupModel;
+import com.muyu.product.domain.model.TemplateAttributeModel;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.util.List;
+
+/**
+ * @ClassName CategoryCommonElementReq
+ * @Description 商品类别公共元素
+ * @Author YunFei.Du
+ * @Date 2024/3/6 14:26
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class CategoryCommonElementResp extends BaseEntity {
+ /**
+ * 商品属性组
+ */
+ private List< TemplateAttributeGroupModel > templateAttributeGroupList;
+ /**
+ * 商品属性
+ */
+ private List< TemplateAttributeModel > templateAttributeList;
+ /**
+ * 自有属性
+ */
+ private List attributeList;
+}
diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/CategoryParentCommonElementResp.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/CategoryParentCommonElementResp.java
index 4641669..11cb011 100644
--- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/CategoryParentCommonElementResp.java
+++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/CategoryParentCommonElementResp.java
@@ -1,12 +1,10 @@
package com.muyu.product.domain.resp;
+import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.product.domain.AttributeGroup;
import com.muyu.product.domain.AttributeInfo;
import com.muyu.product.domain.BrandInfo;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
+import lombok.*;
import java.util.List;
@@ -20,7 +18,8 @@ import java.util.List;
@Builder
@NoArgsConstructor
@AllArgsConstructor
-public class CategoryParentCommonElementResp {
+@EqualsAndHashCode(callSuper = true)
+public class CategoryParentCommonElementResp extends BaseEntity {
/**
* 属性集合
diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/RuleInfoResp.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/RuleInfoResp.java
new file mode 100644
index 0000000..e06ab11
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/RuleInfoResp.java
@@ -0,0 +1,44 @@
+package com.muyu.product.domain.resp;
+
+import com.muyu.common.core.web.domain.BaseEntity;
+import com.muyu.product.domain.RuleInfo;
+import com.muyu.product.domain.model.RuleAttrAddModel;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.util.List;
+import java.util.function.Function;
+
+/**
+ * @ClassName RuleInfoResp
+ * @Description 描述
+ * @Author YunFei.Du
+ * @Date 2024/3/4 18:02
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class RuleInfoResp extends BaseEntity {
+
+ private Long id;
+
+ private String name;
+
+ private String status;
+
+ private List< RuleAttrAddModel > ruleAttrList;
+
+ public static RuleInfoResp infoBuild(RuleInfo ruleInfo, Function> ruleAttrList){
+ return RuleInfoResp.builder ()
+ .id( ruleInfo.getId ( ) )
+ .name( ruleInfo.getName ( ) )
+ .status ( ruleInfo.getStatus ( ) )
+ .ruleAttrList( ruleAttrList.apply ( ruleInfo.getId ( ) ) )
+ .build ();
+ }
+}
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/BrandInfoController.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/BrandInfoController.java
index 80dac39..5ab1e8d 100644
--- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/BrandInfoController.java
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/BrandInfoController.java
@@ -3,6 +3,7 @@ package com.muyu.product.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
+import com.muyu.common.core.text.Convert;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@@ -45,10 +46,13 @@ public class BrandInfoController extends BaseController {
@ApiOperation("获取品牌信息列表")
@RequiresPermissions("product:brand:list")
@GetMapping("/list")
- public Result> list(BrandInfoQueryReq brandInfoQueryReq) {
- startPage();
+ public Result list(BrandInfoQueryReq brandInfoQueryReq) {
+ boolean isPage = brandInfoQueryReq.getParams ( ).get ( "isPage" )==null || Convert.toBool ( brandInfoQueryReq.getParams ().get ( "isPage" ),true );
+ if (isPage){
+ startPage(); //设置请求分页数据
+ }
List list = brandInfoService.list(BrandInfo.queryBuild(brandInfoQueryReq));
- return getDataTable(list);
+ return isPage ? getDataTable ( list ) : Result.success ( list );
}
/**
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/CategoryInfoController.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/CategoryInfoController.java
index ba69064..e1c1ebe 100644
--- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/CategoryInfoController.java
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/CategoryInfoController.java
@@ -4,7 +4,9 @@ import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.muyu.common.security.utils.SecurityUtils;
+
import com.muyu.product.domain.model.CategoryInfoSaveModel;
+import com.muyu.product.domain.resp.CategoryCommonElementResp;
import com.muyu.product.domain.resp.CategoryParentCommonElementResp;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
@@ -76,6 +78,17 @@ public class CategoryInfoController extends BaseController {
return Result.success(categoryInfoService.getById(id));
}
+ /**
+ * 获取品类信息共有属性信息
+ */
+ @ApiOperation("获取品类信息共有属性信息")
+ @RequiresPermissions("product:category:query")
+ @GetMapping(value = "/getTemplateAttribute{cateGoryId}")
+ @ApiImplicitParam(name = "cateGoryId", value = "cateGoryId", required = true, dataType = "Long", paramType = "path", dataTypeClass = Long.class)
+ public Result< CategoryCommonElementResp > getTemplateAttributeByCateGoryId(@PathVariable("cateGoryId") Long cateGoryId) {
+ return Result.success(categoryInfoService.getTemplateAttributeByCateGoryId(cateGoryId));
+ }
+
/**
* 新增品类信息
*/
@@ -95,7 +108,8 @@ public class CategoryInfoController extends BaseController {
@PutMapping("/{id}")
@ApiOperation("修改品类信息")
public Result edit(@PathVariable Long id, @RequestBody CategoryInfoEditReq categoryInfoEditReq) {
- return toAjax(categoryInfoService.updateById(CategoryInfo.editBuild(id,categoryInfoEditReq)));
+ categoryInfoService.updateCategory(id,categoryInfoEditReq);
+ return toAjax(categoryInfoService.updateById( CategoryInfo.editBuild(id,categoryInfoEditReq)));
}
/**
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/RuleInfoController.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/RuleInfoController.java
index c9e9f1c..ae7584c 100644
--- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/RuleInfoController.java
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/RuleInfoController.java
@@ -3,6 +3,10 @@ package com.muyu.product.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
+import com.muyu.common.core.text.Convert;
+import com.muyu.product.domain.model.RuleAttrAddModel;
+import com.muyu.product.domain.model.RuleInfoAddModel;
+import com.muyu.product.domain.resp.RuleInfoResp;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@@ -45,10 +49,14 @@ public class RuleInfoController extends BaseController {
@ApiOperation("获取商品规格列表")
@RequiresPermissions("product:rule:list")
@GetMapping("/list")
- public Result> list(RuleInfoQueryReq ruleInfoQueryReq) {
- startPage();
- List list = ruleInfoService.list(RuleInfo.queryBuild(ruleInfoQueryReq));
- return getDataTable(list);
+ public Result> list(RuleInfoQueryReq ruleInfoQueryReq) {
+
+ boolean isPage = ruleInfoQueryReq.getParams ( ).get ( "isPage" )==null || Convert.toBool ( ruleInfoQueryReq.getParams ().get ( "isPage" ),true );
+ if (isPage){
+ startPage();
+ }
+ TableDataInfo< RuleInfoResp > tableDataInfo = ruleInfoService.queryList(ruleInfoQueryReq);
+ return Result.success ( tableDataInfo );
}
/**
@@ -59,6 +67,7 @@ public class RuleInfoController extends BaseController {
@Log(title = "商品规格", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, RuleInfo ruleInfo) {
+
List list = ruleInfoService.list(ruleInfo);
ExcelUtil util = new ExcelUtil(RuleInfo.class);
util.exportExcel(response, list, "商品规格数据");
@@ -72,6 +81,7 @@ public class RuleInfoController extends BaseController {
@GetMapping(value = "/{id}")
@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = Long.class)
public Result getInfo(@PathVariable("id") Long id) {
+
return Result.success(ruleInfoService.getById(id));
}
@@ -83,7 +93,8 @@ public class RuleInfoController extends BaseController {
@PostMapping
@ApiOperation("新增商品规格")
public Result add(@RequestBody RuleInfoSaveReq ruleInfoSaveReq) {
- return toAjax(ruleInfoService.save(RuleInfo.saveBuild(ruleInfoSaveReq)));
+ return toAjax(ruleInfoService.save(RuleInfoAddModel.saveReqBuild(ruleInfoSaveReq)));
+
}
/**
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/CategoryInfoService.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/CategoryInfoService.java
index 5bce58b..fec0be1 100644
--- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/CategoryInfoService.java
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/CategoryInfoService.java
@@ -8,6 +8,8 @@ import com.muyu.product.domain.BrandInfo;
import com.muyu.product.domain.CategoryInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.product.domain.model.CategoryInfoSaveModel;
+import com.muyu.product.domain.req.CategoryInfoEditReq;
+import com.muyu.product.domain.resp.CategoryCommonElementResp;
import com.muyu.product.domain.resp.CategoryParentCommonElementResp;
/**
@@ -60,4 +62,22 @@ public interface CategoryInfoService extends IService {
* @return 父级以上的属性,属性组,品牌集合
*/
CategoryParentCommonElementResp parentCommonElement(Long categoryId);
+
+ /**
+ * 修改 品类
+ * @param id
+ * @param categoryInfoEditReq
+ */
+ void updateCategory(Long id, CategoryInfoEditReq categoryInfoEditReq);
+
+ /**
+ * 通过品类ID获取品类共有属性
+ *
+ * @param cateGoryId 品类ID
+ *
+ * @return 品类共有属性
+ */
+
+ CategoryCommonElementResp getTemplateAttributeByCateGoryId(Long cateGoryId);
+
}
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/RuleInfoService.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/RuleInfoService.java
index 4ad218e..dd24ecd 100644
--- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/RuleInfoService.java
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/RuleInfoService.java
@@ -1,8 +1,13 @@
package com.muyu.product.service;
import java.util.List;
+
+import com.muyu.common.core.web.page.TableDataInfo;
import com.muyu.product.domain.RuleInfo;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.muyu.product.domain.model.RuleInfoAddModel;
+import com.muyu.product.domain.req.RuleInfoQueryReq;
+import com.muyu.product.domain.resp.RuleInfoResp;
/**
* 商品规格Service接口
@@ -19,4 +24,10 @@ public interface RuleInfoService extends IService {
*/
public List list(RuleInfo ruleInfo);
+ public boolean save(RuleInfoAddModel ruleInfoAddModel);
+
+ TableDataInfo< RuleInfoResp > queryList (RuleInfoQueryReq ruleInfoQueryReq);
+
+
+
}
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/AsAttributeGroupServiceImpl.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/AsAttributeGroupServiceImpl.java
index 15a0fb6..6a4aac0 100644
--- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/AsAttributeGroupServiceImpl.java
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/AsAttributeGroupServiceImpl.java
@@ -47,7 +47,6 @@ public class AsAttributeGroupServiceImpl extends ServiceImpl ids) {
asAttributeGroupMapper.deleteAsAttributeGroupByIds ( ids );
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/AsBrandProjectServiceImpl.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/AsBrandProjectServiceImpl.java
index e5c906d..3ee571d 100644
--- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/AsBrandProjectServiceImpl.java
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/AsBrandProjectServiceImpl.java
@@ -39,11 +39,6 @@ public class AsBrandProjectServiceImpl extends ServiceImpl list = asCategoryAttributeService.list ( asCategoryAttribute );
+
+ ArrayList< Long > asCategoryIds = new ArrayList<> ( );
+ for (AsCategoryAttribute categoryAttribute : list) {
+ asCategoryIds.add ( categoryAttribute.getId () );
+ }
+// 批量删除
+ asCategoryAttributeService.removeBatchByIds ( asCategoryIds );
+ List< Long > attributeIdList = categoryInfoEditReq.getAttributeIdList ( );
+ asCategoryAttributeService.saveBatch (
+ attributeIdList.stream( )
+ .map ( attributeId-> AsCategoryAttribute.buildCategoryAttribute ( id, attributeId ) )
+ .toList ()
+ );
+
+
+ AsCategoryAttributeGroup asCategoryAttributeGroup = AsCategoryAttributeGroup.categoryAttributeGroup ( id );
+ List< AsCategoryAttributeGroup > list1 = asCategoryAttributeGroupService.list ( asCategoryAttributeGroup );
+ ArrayList< Long > asCategoryIds1 = new ArrayList<> ( );
+ for (AsCategoryAttributeGroup categoryAttributeGroup : list1) {
+ asCategoryIds1.add ( categoryAttributeGroup.getId () );
+ }
+// 批量删除
+ asCategoryAttributeGroupService.removeBatchByIds ( asCategoryIds1 );
+ List< Long > attributeGroupIdList = categoryInfoEditReq.getAttributeGroupIdList ();
+ asCategoryAttributeGroupService.saveBatch (
+ attributeGroupIdList.stream ()
+ .map ( attributeGroupId->AsCategoryAttributeGroup.categoryAttributeGroup ( id,attributeGroupId ) )
+ .toList ()
+ );
+
+
+ AsCategoryBrand asCategoryBrand = AsCategoryBrand.categoryBrand ( id );
+ List< AsCategoryBrand > list2 = asCategoryBrandService.list ( asCategoryBrand );
+ ArrayList< Long > asCategoryIds2 = new ArrayList<> ( );
+ for (AsCategoryBrand categoryBrand : list2) {
+ asCategoryIds2.add ( categoryBrand.getId () );
+ }
+ asCategoryBrandService.removeBatchByIds ( asCategoryIds2 );
+ List< Long > brandIdList = categoryInfoEditReq.getBrandIdList ( );
+ asCategoryBrandService.saveBatch (
+ brandIdList.stream ()
+ .map ( brandId->AsCategoryBrand.categoryBrand ( id,brandId ) )
+ .toList ()
+ );
+
+
+ }
+
+
+
+
@Override
public boolean save(CategoryInfoSaveModel categoryInfoSaveModel) {
+// 根据 CategoryInfoSaveModel 构建 categoryInfo 对象
CategoryInfo categoryInfo = CategoryInfo.saveModelBuild(categoryInfoSaveModel);
+// 保存 CateGoryInfo,对象到数据库中
boolean save = this.save(categoryInfo);
+// 获取保存后的CateGoryINfo 对象 的 Id
Long categoryInfoId = categoryInfo.getId();
+
+// 处理属性列表
List attributeIdList = categoryInfoSaveModel.getAttributeIdList();
+
+// 批量保存属性关联关系
+// 是否为 null 是否为空
if (attributeIdList != null && !attributeIdList.isEmpty()){
asCategoryAttributeService.saveBatch(
- attributeIdList.stream()
- .map(attributeId -> AsCategoryAttribute.categoryBuild(categoryInfoId, attributeId))
- .toList()
+// 将 attributeIdList 转换为流,以便后续进行流式操作。
+ attributeIdList.stream()
+// 使用 map 操作将流中的每个 attributeId 转换为相应的 AsCategoryAttribute 对象,这些对象表示类别和属性之间的关联关系。
+ .map(attributeId -> AsCategoryAttribute.categoryBuild(categoryInfoId, attributeId))
+// 将流中的元素收集到一个新的列表中。
+ .toList()
);
}
+
+
+ // 处理属性分组列表
List attributeGroupIdList = categoryInfoSaveModel.getAttributeGroupIdList();
if (attributeGroupIdList != null && !attributeGroupIdList.isEmpty()){
+ // 批量保存属性分组关联关系
asCategoryAttributeGroupService.saveBatch(
attributeGroupIdList.stream()
.map(attributeGroupId -> AsCategoryAttributeGroup.categoryAttributeGroup(categoryInfoId, attributeGroupId))
.toList()
);
}
+ // 处理品牌列表
List brandIdList = categoryInfoSaveModel.getBrandIdList();
if (brandIdList != null && !brandIdList.isEmpty()){
+ // 批量保存品牌关联关系
asCategoryBrandService.saveBatch(
brandIdList.stream()
.map(brandId -> AsCategoryBrand.categoryBrand (categoryInfoId, brandId))
.toList()
);
}
+// 返回保存结果
return save;
}
-
-
-
-
/**
* 通过品类获取 父级以上的属性组集合
* @param categoryId
* @return
*/
-
-
-
-
public List getCommon(Long categoryId, IService iService, IService bsiService){
List list = new ArrayList();
QueryWrapper asQueryWrapper = new QueryWrapper<> ();
@@ -192,6 +272,52 @@ public class CategoryInfoServiceImpl extends ServiceImpl asCategoryAttributeGroupLambdaQueryWrapper = new LambdaQueryWrapper<>(){{
+ eq(AsCategoryAttributeGroup::getCategoryId, cateGoryId);
+ }};
+ List categoryAttributeGroupList = asCategoryAttributeGroupService.list(asCategoryAttributeGroupLambdaQueryWrapper);
+ List attributeGroupModelList = categoryAttributeGroupList.stream()
+ .map(asCategoryAttributeGroup -> TemplateAttributeGroupModel.attributeGroupBuild(
+ attributeGroupService.getById(asCategoryAttributeGroup.getAttributeGroupId()),
+ attributeGroupId -> attributeInfoService.listByIds(
+ asAttributeGroupService.list(
+ new LambdaQueryWrapper<>(){{
+ eq(AsAttributeGroup::getGroupId, asCategoryAttributeGroup.getAttributeGroupId());
+ }}
+ ).stream().map(AsAttributeGroup::getAttributeId).toList()
+ ).stream()
+ .map(AttributeInfo::buildTemplateModel)
+ .toList()
+ ))
+ .filter(TemplateAttributeGroupModel::isEffective)
+ .toList();
+
+ List< TemplateAttributeModel > templateAttributeModelList = new ArrayList<>();
+
+ List attributeModelList = new ArrayList<>();
+
+
+ return CategoryCommonElementResp.builder()
+ .templateAttributeGroupList(attributeGroupModelList)
+ .templateAttributeList(templateAttributeModelList)
+ .attributeList(attributeModelList)
+ .build();
+ }
+
+
@Override
public List< BrandInfo > getBrand(Long categoryId) {
return null;
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/RuleInfoServiceImpl.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/RuleInfoServiceImpl.java
index 3d180d5..f622f2d 100644
--- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/RuleInfoServiceImpl.java
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/RuleInfoServiceImpl.java
@@ -2,8 +2,19 @@ package com.muyu.product.service.impl;
import java.util.List;
+import com.github.pagehelper.PageInfo;
+import com.muyu.common.core.text.Convert;
import com.muyu.common.core.utils.ObjUtils;
+import com.muyu.common.core.web.page.TableDataInfo;
+import com.muyu.common.security.utils.SecurityUtils;
+import com.muyu.product.domain.RuleAttrInfo;
+import com.muyu.product.domain.model.RuleAttrAddModel;
+import com.muyu.product.domain.model.RuleInfoAddModel;
+import com.muyu.product.domain.req.RuleInfoQueryReq;
+import com.muyu.product.domain.resp.RuleInfoResp;
+import com.muyu.product.service.RuleAttrInfoService;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.muyu.product.mapper.RuleInfoMapper;
import com.muyu.product.domain.RuleInfo;
@@ -21,6 +32,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@Service
public class RuleInfoServiceImpl extends ServiceImpl implements RuleInfoService {
+
+ @Autowired
+ private RuleAttrInfoService ruleAttrInfoService;
/**
* 查询商品规格列表
*
@@ -46,4 +60,41 @@ public class RuleInfoServiceImpl extends ServiceImpl
return list(queryWrapper);
}
+
+ @Override
+ public boolean save(RuleInfoAddModel ruleInfoAddModel) {
+// 调用添加模型构建
+ RuleInfo ruleInfo = RuleInfo.addModelBuild(ruleInfoAddModel, SecurityUtils::getUsername);
+// 调用当前对象的save 方法保存 ruleInfo 对象,并获取保存的结果
+ boolean save = this.save(ruleInfo);
+// if 保存成功 则继续 保存规则属性消息
+ if (save){
+// 批量保存规则消息
+ ruleAttrInfoService.saveBatch(
+ ruleInfoAddModel.getRuleAttrList().stream()
+// 将每个规则添加转换为 RuleAttrInfo 对象 并保存到列表中
+ .map(ruleAttrAddModel -> RuleAttrInfo.addModelBuild(ruleAttrAddModel, ruleInfo.getId (), SecurityUtils::getUsername))
+ .toList()
+ );
+ }
+ return save;
+ }
+
+
+ @Override
+ public TableDataInfo< RuleInfoResp > queryList (RuleInfoQueryReq ruleInfoQueryReq) {
+ List list = this.list(RuleInfo.queryBuild(ruleInfoQueryReq));
+ List ruleInfoRespList = list.stream()
+ .map(ruleInfo -> RuleInfoResp.infoBuild(ruleInfo, ruleId -> {
+ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(RuleAttrInfo::getRuleId, ruleId);
+ return ruleAttrInfoService.list(queryWrapper).stream().map( RuleAttrAddModel::infoBuild).toList();
+ }))
+ .toList();
+ boolean isPage = ruleInfoQueryReq.getParams ( ).get ( "isPage" )==null || Convert.toBool ( ruleInfoQueryReq.getParams ().get ( "isPage" ),true );
+ return TableDataInfo.builder()
+ .rows(ruleInfoRespList)
+ .total(isPage ? new PageInfo<> ( list ).getTotal ():0)
+ .build();
+ }
}