diff --git a/muyu-auth/src/main/resources/bootstrap.yml b/muyu-auth/src/main/resources/bootstrap.yml
index b309a3d..6db92bc 100644
--- a/muyu-auth/src/main/resources/bootstrap.yml
+++ b/muyu-auth/src/main/resources/bootstrap.yml
@@ -14,10 +14,10 @@ spring:
nacos:
discovery:
# 服务注册地址
- server-addr: 127.0.0.1:8848
+ server-addr: 111.231.174.71:8848
config:
# 配置中心地址
- server-addr: 127.0.0.1:8848
+ server-addr: 111.231.174.71:8848
# 配置文件格式
file-extension: yml
# 共享配置
diff --git a/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/utils/uuid/ObjUtils.java b/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/utils/uuid/ObjUtils.java
new file mode 100644
index 0000000..9a3a61d
--- /dev/null
+++ b/muyu-common/muyu-common-core/src/main/java/com/muyu/common/core/utils/uuid/ObjUtils.java
@@ -0,0 +1,65 @@
+package com.muyu.common.core.utils.uuid;
+
+import org.apache.commons.lang3.ObjectUtils;
+
+import java.math.BigDecimal;
+
+/**
+ * @author DongZl
+ * @description: 对象工具类
+ * @Date 2023-10-9 下午 04:56
+ */
+public class ObjUtils {
+
+ /**
+ * 兼容
+ * CharSequence: 如果长度为零,则认为为空。
+ * Array: 如果长度为零,则认为为空。
+ * Collection: 如果元素为零,则认为为空。
+ * Map: 如果键值映射为零,则认为为空。
+ * @param o 对象
+ * @return 如果对象具有受支持的类型并且为空或null,则为true,否则为false
+ */
+ public static boolean notNull(Object o){
+ return ObjectUtils.isNotEmpty(o);
+ }
+
+ /**
+ * 判断long类型不为0
+ * @param val 值
+ * @return 返回值不为0
+ */
+ public static boolean notNull(Long val){
+ return ObjectUtils.isNotEmpty(val) && val != 0;
+ }
+
+ /**
+ * 判断Integer类型不为0
+ * @param val 值
+ * @return 返回值不为0
+ */
+ public static boolean notNull(Integer val){
+ return ObjectUtils.isNotEmpty(val) && val != 0;
+ }
+ /**
+ * 判断BigDecimal类型不为0
+ * @param val 值
+ * @return 返回值不为0
+ */
+ public static boolean notNull(BigDecimal val){
+ return ObjectUtils.isNotEmpty(val) && val.doubleValue() == 0.00;
+ }
+ /**
+ * 判断BigDecimal类型不为0
+ * @param val 值
+ * @return 返回值不为0
+ */
+ public static boolean notChildNull(Object[] val){
+ for (Object o : val) {
+ if (!notNull(o)){
+ return false;
+ }
+ }
+ return true;
+ }
+}
diff --git a/muyu-gateway/src/main/resources/bootstrap.yml b/muyu-gateway/src/main/resources/bootstrap.yml
index d7367b4..b73e856 100644
--- a/muyu-gateway/src/main/resources/bootstrap.yml
+++ b/muyu-gateway/src/main/resources/bootstrap.yml
@@ -14,10 +14,10 @@ spring:
nacos:
discovery:
# 服务注册地址
- server-addr: 127.0.0.1:8848
+ server-addr: 111.231.174.71:8848
config:
# 配置中心地址
- server-addr: 127.0.0.1:8848
+ server-addr: 111.231.174.71:8848
# 配置文件格式
file-extension: yml
# 共享配置
@@ -28,12 +28,12 @@ spring:
eager: true
transport:
# 控制台地址
- dashboard: 127.0.0.1:8718
+ dashboard: 127.0.0.1:8858
# nacos配置持久化
datasource:
ds1:
nacos:
- server-addr: 127.0.0.1:8848
+ server-addr: 111.231.174.71:8848
dataId: sentinel-muyu-gateway
groupId: DEFAULT_GROUP
data-type: json
diff --git a/muyu-modules/muyu-file/src/main/resources/bootstrap.yml b/muyu-modules/muyu-file/src/main/resources/bootstrap.yml
index 0cb85bd..79e2e5f 100644
--- a/muyu-modules/muyu-file/src/main/resources/bootstrap.yml
+++ b/muyu-modules/muyu-file/src/main/resources/bootstrap.yml
@@ -14,10 +14,10 @@ spring:
nacos:
discovery:
# 服务注册地址
- server-addr: 127.0.0.1:8848
+ server-addr: 111.231.174.71:8848
config:
# 配置中心地址
- server-addr: 127.0.0.1:8848
+ server-addr: 111.231.174.71:8848
# 配置文件格式
file-extension: yml
# 共享配置
diff --git a/muyu-modules/muyu-gen/src/main/resources/bootstrap.yml b/muyu-modules/muyu-gen/src/main/resources/bootstrap.yml
index b628931..849c43d 100644
--- a/muyu-modules/muyu-gen/src/main/resources/bootstrap.yml
+++ b/muyu-modules/muyu-gen/src/main/resources/bootstrap.yml
@@ -14,10 +14,10 @@ spring:
nacos:
discovery:
# 服务注册地址
- server-addr: 127.0.0.1:8848
+ server-addr: 111.231.174.71:8848
config:
# 配置中心地址
- server-addr: 127.0.0.1:8848
+ server-addr: 111.231.174.71:8848
# 配置文件格式
file-extension: yml
# 共享配置
diff --git a/muyu-modules/muyu-job/src/main/resources/bootstrap.yml b/muyu-modules/muyu-job/src/main/resources/bootstrap.yml
index 618f3e8..a1254e3 100644
--- a/muyu-modules/muyu-job/src/main/resources/bootstrap.yml
+++ b/muyu-modules/muyu-job/src/main/resources/bootstrap.yml
@@ -14,10 +14,10 @@ spring:
nacos:
discovery:
# 服务注册地址
- server-addr: 127.0.0.1:8848
+ server-addr: 111.231.174.71:8848
config:
# 配置中心地址
- server-addr: 127.0.0.1:8848
+ server-addr: 111.231.174.71:8848
# 配置文件格式
file-extension: yml
# 共享配置
diff --git a/muyu-modules/muyu-product/muyu-product-commo/pom.xml b/muyu-modules/muyu-product/muyu-product-commo/pom.xml
new file mode 100644
index 0000000..3945f90
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/pom.xml
@@ -0,0 +1,28 @@
+
+
+ 4.0.0
+
+ com.muyu
+ muyu-product
+ 3.6.3
+
+
+ muyu-product-commo
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+
+
+ com.muyu
+ muyu-common-core
+
+
+
+
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/AsAttributeGroup.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/AsAttributeGroup.java
new file mode 100644
index 0000000..26449e0
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/AsAttributeGroup.java
@@ -0,0 +1,56 @@
+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.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.experimental.SuperBuilder;
+
+/**
+ * 属性与组中间对象 as_attribute_group
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@TableName("as_attribute_group")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "AsAttributeGroup", description = "属性与组中间")
+public class AsAttributeGroup 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)
+ private Long groupId;
+
+ /** 属性id */
+ @Excel(name = "属性id")
+ @ApiModelProperty(name = "属性id", value = "属性id", required = true)
+ private Long attributeId;
+
+
+ public static AsAttributeGroup buildGroup (Long attributeGroupId,
+ Long attributeId) {
+ return AsAttributeGroup.builder()
+ .groupId(attributeGroupId)
+ .attributeId(attributeId)
+ .build();
+ }
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/AsBrandProject.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/AsBrandProject.java
new file mode 100644
index 0000000..6a89687
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/AsBrandProject.java
@@ -0,0 +1,48 @@
+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.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.experimental.SuperBuilder;
+
+/**
+ * 品牌商品中间对象 as_brand_project
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@TableName("as_brand_project")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "AsBrandProject", description = "品牌商品中间")
+public class AsBrandProject 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)
+ private Long brandId;
+
+ /** 商品id */
+ @Excel(name = "商品id")
+ @ApiModelProperty(name = "商品id", value = "商品id", required = true)
+ private String projectId;
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/AsCategoryAttribute.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/AsCategoryAttribute.java
new file mode 100644
index 0000000..c32cdd8
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/AsCategoryAttribute.java
@@ -0,0 +1,61 @@
+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.common.core.annotation.Excel;
+import com.muyu.common.core.web.domain.BaseEntity;
+import com.muyu.product.domain.base.CategoryBase;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 品类属性中间对象 as_category_attribute
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@TableName("as_category_attribute")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "AsCategoryAttribute", description = "品类属性中间")
+public class AsCategoryAttribute extends BaseEntity implements CategoryBase {
+
+ 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)
+ private Long categoryId;
+
+ /** 属性id */
+ @Excel(name = "属性id")
+ @ApiModelProperty(name = "属性id", value = "属性id", required = true)
+ private Long attributeId;
+
+
+ public static AsCategoryAttribute categoryBuild(Long categoryInfoId, Long attributeId) {
+ return AsCategoryAttribute.builder()
+ .categoryId(categoryInfoId)
+ .attributeId(attributeId)
+ .build();
+ }
+
+ @Override
+ public Long getBaseId () {
+ return this.attributeId;
+ }
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/AsCategoryAttributeGroup.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/AsCategoryAttributeGroup.java
new file mode 100644
index 0000000..7e4ccf7
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/AsCategoryAttributeGroup.java
@@ -0,0 +1,61 @@
+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.common.core.annotation.Excel;
+import com.muyu.common.core.web.domain.BaseEntity;
+import com.muyu.product.domain.base.CategoryBase;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 品类属性组中间对象 as_category_attribute_group
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@TableName("as_category_attribute_group")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "AsCategoryAttributeGroup", description = "品类属性组中间")
+public class AsCategoryAttributeGroup extends BaseEntity implements CategoryBase {
+
+ 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)
+ private Long categoryId;
+
+ /** 属性组 */
+ @Excel(name = "属性组")
+ @ApiModelProperty(name = "属性组", value = "属性组", required = true)
+ private Long attributeGroupId;
+
+
+ public static AsCategoryAttributeGroup categoryBuild(Long categoryInfoId, Long attributeGroupId) {
+ return AsCategoryAttributeGroup.builder()
+ .attributeGroupId(attributeGroupId)
+ .categoryId(categoryInfoId)
+ .build();
+ }
+
+ @Override
+ public Long getBaseId () {
+ return this.attributeGroupId;
+ }
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/AsCategoryBrand.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/AsCategoryBrand.java
new file mode 100644
index 0000000..9a0da88
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/AsCategoryBrand.java
@@ -0,0 +1,60 @@
+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.common.core.annotation.Excel;
+import com.muyu.common.core.web.domain.BaseEntity;
+import com.muyu.product.domain.base.CategoryBase;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 品类品牌中间对象 as_category_brand
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@TableName("as_category_brand")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "AsCategoryBrand", description = "品类品牌中间")
+public class AsCategoryBrand extends BaseEntity implements CategoryBase {
+
+ 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)
+ private Long categoryId;
+
+ /** 品牌id */
+ @Excel(name = "品牌id")
+ @ApiModelProperty(name = "品牌id", value = "品牌id", required = true)
+ private Long brandId;
+
+ public static AsCategoryBrand categoryBuild(Long categoryInfoId, Long brandId) {
+ return AsCategoryBrand.builder()
+ .brandId(brandId)
+ .categoryId(categoryInfoId)
+ .build();
+ }
+
+ @Override
+ public Long getBaseId () {
+ return this.brandId;
+ }
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/AsProductAttributeInfo.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/AsProductAttributeInfo.java
new file mode 100644
index 0000000..0098d21
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/AsProductAttributeInfo.java
@@ -0,0 +1,53 @@
+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.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.experimental.SuperBuilder;
+
+/**
+ * 商品属性对象 as_product_attribute_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@TableName("as_product_attribute_info")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "AsProductAttributeInfo", description = "商品属性")
+public class AsProductAttributeInfo extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 属性编号 */
+ @TableId(value = "id",type = IdType.AUTO)
+ @ApiModelProperty(name = "属性编号", value = "属性编号")
+ private Long id;
+
+ /** 商品 */
+ @Excel(name = "商品")
+ @ApiModelProperty(name = "商品", value = "商品", required = true)
+ private Long productId;
+
+ /** 属性 */
+ @Excel(name = "属性")
+ @ApiModelProperty(name = "属性", value = "属性", required = true)
+ private Long attributeId;
+
+ /** 属性值 */
+ @Excel(name = "属性值")
+ @ApiModelProperty(name = "属性值", value = "属性值", required = true)
+ private String value;
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/AttributeGroup.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/AttributeGroup.java
new file mode 100644
index 0000000..b232a55
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/AttributeGroup.java
@@ -0,0 +1,83 @@
+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.common.core.annotation.Excel;
+import com.muyu.common.core.web.domain.BaseEntity;
+import com.muyu.product.domain.req.AttributeGroupEditReq;
+import com.muyu.product.domain.req.AttributeGroupQueryReq;
+import com.muyu.product.domain.req.AttributeGroupSaveReq;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 属性组对象 attribute_group
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@TableName("attribute_group")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "AttributeGroup", description = "属性组")
+public class AttributeGroup extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 属性组编号 */
+ @TableId(value = "id",type = IdType.AUTO)
+ @ApiModelProperty(name = "属性组编号", value = "属性组编号")
+ private Long id;
+
+ /** 组名称 */
+ @Excel(name = "组名称")
+ @ApiModelProperty(name = "组名称", value = "组名称", required = true)
+ private String name;
+
+ /** 状态 */
+ @Excel(name = "状态")
+ @ApiModelProperty(name = "状态", value = "状态", required = true)
+ private String states;
+
+
+ /**
+ * 查询构造器
+ */
+ public static AttributeGroup queryBuild( AttributeGroupQueryReq attributeGroupQueryReq){
+ return AttributeGroup.builder()
+ .name(attributeGroupQueryReq.getName())
+ .states(attributeGroupQueryReq.getStates())
+ .build();
+ }
+
+ /**
+ * 添加构造器
+ */
+ public static AttributeGroup saveBuild(AttributeGroupSaveReq attributeGroupSaveReq){
+ return AttributeGroup.builder()
+ .name(attributeGroupSaveReq.getName())
+ .states(attributeGroupSaveReq.getStates())
+ .build();
+ }
+
+ /**
+ * 修改构造器
+ */
+ public static AttributeGroup editBuild(Long id, AttributeGroupEditReq attributeGroupEditReq){
+ return AttributeGroup.builder()
+ .id(id)
+ .name(attributeGroupEditReq.getName())
+ .states(attributeGroupEditReq.getStates())
+ .build();
+ }
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/AttributeInfo.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/AttributeInfo.java
new file mode 100644
index 0000000..3ff402f
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/AttributeInfo.java
@@ -0,0 +1,92 @@
+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.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;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 商品属性对象 attribute_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@TableName("attribute_info")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "AttributeInfo", description = "商品属性")
+public class AttributeInfo extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 属性编号 */
+ @TableId(value = "id",type = IdType.AUTO)
+ @ApiModelProperty(name = "属性编号", value = "属性编号")
+ private Long id;
+
+ /** 属性编码 */
+ @Excel(name = "属性编码")
+ @ApiModelProperty(name = "属性编码", value = "属性编码", required = true)
+ private String code;
+
+ /** 属性名 */
+ @Excel(name = "属性名")
+ @ApiModelProperty(name = "属性名", value = "属性名", required = true)
+ private String name;
+
+
+ public TemplateAttributeModel buildTemplateModel(){
+ return TemplateAttributeModel.builder()
+ .id(this.getId())
+ .code(this.getCode())
+ .name(this.getName())
+ .build();
+ }
+
+ /**
+ * 查询构造器
+ */
+ public static AttributeInfo queryBuild( AttributeInfoQueryReq attributeInfoQueryReq){
+ return AttributeInfo.builder()
+ .name(attributeInfoQueryReq.getName())
+ .code(attributeInfoQueryReq.getCode())
+ .build();
+ }
+
+ /**
+ * 添加构造器
+ */
+ public static AttributeInfo saveBuild(AttributeInfoSaveReq attributeInfoSaveReq){
+ return AttributeInfo.builder()
+ .name(attributeInfoSaveReq.getName())
+ .code(attributeInfoSaveReq.getCode())
+ .build();
+ }
+
+ /**
+ * 修改构造器
+ */
+ public static AttributeInfo editBuild(Long id, AttributeInfoEditReq attributeInfoEditReq){
+ return AttributeInfo.builder()
+ .id(id)
+ .name(attributeInfoEditReq.getName())
+ .code(attributeInfoEditReq.getCode())
+ .build();
+ }
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/BrandInfo.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/BrandInfo.java
new file mode 100644
index 0000000..9bf829a
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/BrandInfo.java
@@ -0,0 +1,114 @@
+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.common.core.annotation.Excel;
+import com.muyu.common.core.web.domain.BaseEntity;
+import com.muyu.product.domain.req.BrandInfoEditReq;
+import com.muyu.product.domain.req.BrandInfoQueryReq;
+import com.muyu.product.domain.req.BrandInfoSaveReq;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 品牌信息对象 brand_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@TableName("brand_info")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "BrandInfo", description = "品牌信息")
+public class BrandInfo extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ @ApiModelProperty(name = "主键", value = "主键")
+ private Long id;
+
+ /**
+ * 品牌名称
+ */
+ @Excel(name = "品牌名称")
+ @ApiModelProperty(name = "品牌名称", value = "品牌名称", required = true)
+ private String name;
+
+ /**
+ * LOGO
+ */
+ @Excel(name = "LOGO")
+ @ApiModelProperty(name = "LOGO", value = "LOGO", required = true)
+ private String logo;
+
+ /**
+ * 是否启用
+ */
+ @Excel(name = "是否启用")
+ @ApiModelProperty(name = "是否启用", value = "是否启用", required = true)
+ private String start;
+
+ /**
+ * 介绍
+ */
+ @Excel(name = "介绍")
+ @ApiModelProperty(name = "介绍", value = "介绍")
+ private String introduction;
+
+ /**
+ * 查询构造器
+ */
+ public static BrandInfo queryBuild(BrandInfoQueryReq brandInfoQueryReq) {
+ return BrandInfo.builder()
+ .name(brandInfoQueryReq.getName())
+ .logo(brandInfoQueryReq.getLogo())
+ .start(brandInfoQueryReq.getStart())
+ .introduction(brandInfoQueryReq.getIntroduction())
+ .build();
+ }
+
+ /**
+ * 添加构造器
+ */
+ public static BrandInfo saveBuild(BrandInfoSaveReq brandInfoSaveReq) {
+ return BrandInfo.builder()
+ .name(brandInfoSaveReq.getName())
+ .logo(brandInfoSaveReq.getLogo())
+ .start(brandInfoSaveReq.getStart())
+ .introduction(brandInfoSaveReq.getIntroduction())
+ .remark(brandInfoSaveReq.getRemark())
+ .build();
+ }
+
+ /**
+ * 修改构造器
+ */
+ public static BrandInfo editBuild(Long id, BrandInfoEditReq brandInfoEditReq) {
+ return BrandInfo.builder()
+ .id(id)
+ .name(brandInfoEditReq.getName())
+ .logo(brandInfoEditReq.getLogo())
+ .start(brandInfoEditReq.getStart())
+ .introduction(brandInfoEditReq.getIntroduction())
+ .createBy(brandInfoEditReq.getCreateBy())
+ .createTime(brandInfoEditReq.getCreateTime())
+ .updateBy(brandInfoEditReq.getUpdateBy())
+ .createTime(brandInfoEditReq.getCreateTime())
+ .remark(brandInfoEditReq.getRemark())
+ .build();
+ }
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/CategoryInfo.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/CategoryInfo.java
new file mode 100644
index 0000000..f50dae7
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/CategoryInfo.java
@@ -0,0 +1,116 @@
+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.common.core.annotation.Excel;
+import com.muyu.common.core.web.domain.TreeEntity;
+import com.muyu.product.domain.model.CategoryInfoSaveModel;
+import com.muyu.product.domain.req.CategoryInfoEditReq;
+import com.muyu.product.domain.req.CategoryInfoQueryReq;
+import com.muyu.product.domain.req.CategoryInfoSaveReq;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.util.Date;
+import java.util.function.Supplier;
+
+/**
+ * 品类信息对象 category_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@TableName("category_info")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "CategoryInfo", description = "品类信息")
+public class CategoryInfo extends TreeEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 主键 */
+ @TableId(value = "id",type = IdType.AUTO)
+ @ApiModelProperty(name = "主键", value = "主键")
+ private Long id;
+
+ /** 品类名称 */
+ @Excel(name = "品类名称")
+ @ApiModelProperty(name = "品类名称", value = "品类名称", required = true)
+ private String name;
+
+ /** 图片 */
+ @Excel(name = "图片")
+ @ApiModelProperty(name = "图片", value = "图片", required = true)
+ private String image;
+
+ /** 是否启用 */
+ @Excel(name = "是否启用")
+ @ApiModelProperty(name = "是否启用", value = "是否启用", required = true)
+ private String start;
+
+ /** 介绍 */
+ @Excel(name = "介绍")
+ @ApiModelProperty(name = "介绍", value = "介绍")
+ private String introduction;
+
+ /**
+ * 查询构造器
+ */
+ public static CategoryInfo queryBuild( CategoryInfoQueryReq categoryInfoQueryReq){
+ return CategoryInfo.builder()
+ .name(categoryInfoQueryReq.getName())
+ .image(categoryInfoQueryReq.getImage())
+ .start(categoryInfoQueryReq.getStart())
+ .introduction(categoryInfoQueryReq.getIntroduction())
+ .build();
+ }
+
+ /**
+ * 添加构造器
+ */
+ public static CategoryInfo saveBuild(CategoryInfoSaveReq categoryInfoSaveReq, Supplier supplier){
+ return CategoryInfo.builder()
+ .name(categoryInfoSaveReq.getName())
+ .image(categoryInfoSaveReq.getImage())
+ .start(categoryInfoSaveReq.getStart())
+ .introduction(categoryInfoSaveReq.getIntroduction())
+ .parentId(categoryInfoSaveReq.getParentId())
+ .createBy(supplier.get())
+ .createTime(new Date())
+ .build();
+ }
+
+ /**
+ * 修改构造器
+ */
+ public static CategoryInfo editBuild(Long id, CategoryInfoEditReq categoryInfoEditReq){
+ return CategoryInfo.builder()
+ .id(id)
+ .name(categoryInfoEditReq.getName())
+ .image(categoryInfoEditReq.getImage())
+ .start(categoryInfoEditReq.getStart())
+ .introduction(categoryInfoEditReq.getIntroduction())
+ .build();
+ }
+
+ public static CategoryInfo saveModelBuild(CategoryInfoSaveModel categoryInfoSaveModel) {
+ return CategoryInfo.builder()
+ .name(categoryInfoSaveModel.getName())
+ .image(categoryInfoSaveModel.getImage())
+ .start(categoryInfoSaveModel.getStart())
+ .introduction(categoryInfoSaveModel.getIntroduction())
+ .parentId(categoryInfoSaveModel.getParentId())
+ .createBy(categoryInfoSaveModel.getCreateBy())
+ .createTime(new Date())
+ .build();
+ }
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/CommentInfo.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/CommentInfo.java
new file mode 100644
index 0000000..8de6f97
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/CommentInfo.java
@@ -0,0 +1,98 @@
+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.common.core.annotation.Excel;
+import com.muyu.common.core.web.domain.BaseEntity;
+import com.muyu.product.domain.req.CommentInfoEditReq;
+import com.muyu.product.domain.req.CommentInfoQueryReq;
+import com.muyu.product.domain.req.CommentInfoSaveReq;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 商品评论对象 comment_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@TableName("comment_info")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "CommentInfo", description = "商品评论")
+public class CommentInfo 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)
+ private Long projectId;
+
+ /** 评论 */
+ @Excel(name = "评论")
+ @ApiModelProperty(name = "评论", value = "评论")
+ private String comment;
+
+ /** 图片 */
+ @Excel(name = "图片")
+ @ApiModelProperty(name = "图片", value = "图片")
+ private String images;
+
+ /** 父类id */
+ @Excel(name = "父类id")
+ @ApiModelProperty(name = "父类id", value = "父类id")
+ private String parentId;
+
+ /**
+ * 查询构造器
+ */
+ public static CommentInfo queryBuild( CommentInfoQueryReq commentInfoQueryReq){
+ return CommentInfo.builder()
+ .projectId(commentInfoQueryReq.getProjectId())
+ .comment(commentInfoQueryReq.getComment())
+ .images(commentInfoQueryReq.getImages())
+ .parentId(commentInfoQueryReq.getParentId())
+ .build();
+ }
+
+ /**
+ * 添加构造器
+ */
+ public static CommentInfo saveBuild(CommentInfoSaveReq commentInfoSaveReq){
+ return CommentInfo.builder()
+ .projectId(commentInfoSaveReq.getProjectId())
+ .comment(commentInfoSaveReq.getComment())
+ .images(commentInfoSaveReq.getImages())
+ .parentId(commentInfoSaveReq.getParentId())
+ .build();
+ }
+
+ /**
+ * 修改构造器
+ */
+ public static CommentInfo editBuild(Long id, CommentInfoEditReq commentInfoEditReq){
+ return CommentInfo.builder()
+ .id(id)
+ .projectId(commentInfoEditReq.getProjectId())
+ .comment(commentInfoEditReq.getComment())
+ .images(commentInfoEditReq.getImages())
+ .parentId(commentInfoEditReq.getParentId())
+ .build();
+ }
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/CommentLikeInfo.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/CommentLikeInfo.java
new file mode 100644
index 0000000..43be272
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/CommentLikeInfo.java
@@ -0,0 +1,82 @@
+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.common.core.annotation.Excel;
+import com.muyu.common.core.web.domain.BaseEntity;
+import com.muyu.product.domain.req.CommentLikeInfoEditReq;
+import com.muyu.product.domain.req.CommentLikeInfoQueryReq;
+import com.muyu.product.domain.req.CommentLikeInfoSaveReq;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 评论点赞对象 comment_like_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@TableName("comment_like_info")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "CommentLikeInfo", description = "评论点赞")
+public class CommentLikeInfo 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)
+ private Long commentId;
+
+ /** 点赞人id */
+ @Excel(name = "点赞人id")
+ @ApiModelProperty(name = "点赞人id", value = "点赞人id", required = true)
+ private Long userId;
+
+ /**
+ * 查询构造器
+ */
+ public static CommentLikeInfo queryBuild( CommentLikeInfoQueryReq commentLikeInfoQueryReq){
+ return CommentLikeInfo.builder()
+ .commentId(commentLikeInfoQueryReq.getCommentId())
+ .userId(commentLikeInfoQueryReq.getUserId())
+ .build();
+ }
+
+ /**
+ * 添加构造器
+ */
+ public static CommentLikeInfo saveBuild(CommentLikeInfoSaveReq commentLikeInfoSaveReq){
+ return CommentLikeInfo.builder()
+ .commentId(commentLikeInfoSaveReq.getCommentId())
+ .userId(commentLikeInfoSaveReq.getUserId())
+ .build();
+ }
+
+ /**
+ * 修改构造器
+ */
+ public static CommentLikeInfo editBuild(Long id, CommentLikeInfoEditReq commentLikeInfoEditReq){
+ return CommentLikeInfo.builder()
+ .id(id)
+ .commentId(commentLikeInfoEditReq.getCommentId())
+ .userId(commentLikeInfoEditReq.getUserId())
+ .build();
+ }
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/ProjectInfo.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/ProjectInfo.java
new file mode 100644
index 0000000..08c24d4
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/ProjectInfo.java
@@ -0,0 +1,146 @@
+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.common.core.annotation.Excel;
+import com.muyu.common.core.web.domain.BaseEntity;
+import com.muyu.product.domain.req.ProjectInfoEditReq;
+import com.muyu.product.domain.req.ProjectInfoQueryReq;
+import com.muyu.product.domain.req.ProjectInfoSaveReq;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 商品信息对象 project_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@TableName("project_info")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "ProjectInfo", description = "商品信息")
+public class ProjectInfo extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 主键 */
+ @TableId(value = "id",type = IdType.AUTO)
+ @ApiModelProperty(name = "主键", value = "主键")
+ private Long id;
+
+ /** 商品名称 */
+ @Excel(name = "商品名称")
+ @ApiModelProperty(name = "商品名称", value = "商品名称")
+ private String name;
+
+ /** 商品描述 */
+ @Excel(name = "商品描述")
+ @ApiModelProperty(name = "商品描述", value = "商品描述")
+ private String introduction;
+
+ /** 主类型 */
+ @Excel(name = "主类型")
+ @ApiModelProperty(name = "主类型", value = "主类型")
+ private String mianType;
+
+ /** 父类型 */
+ @Excel(name = "父类型")
+ @ApiModelProperty(name = "父类型", value = "父类型")
+ private String parentType;
+
+ /** 商品类型 */
+ @Excel(name = "商品类型")
+ @ApiModelProperty(name = "商品类型", value = "商品类型")
+ private String type;
+
+ /** 商品图片 */
+ @Excel(name = "商品图片")
+ @ApiModelProperty(name = "商品图片", value = "商品图片")
+ private String image;
+
+ /** 商品轮播图 */
+ @Excel(name = "商品轮播图")
+ @ApiModelProperty(name = "商品轮播图", value = "商品轮播图")
+ private String carouselImages;
+
+ /** 商品状态 */
+ @Excel(name = "商品状态")
+ @ApiModelProperty(name = "商品状态", value = "商品状态")
+ private String status;
+
+ /** 规格 */
+ @Excel(name = "规格")
+ @ApiModelProperty(name = "规格", value = "规格")
+ private Long ruleId;
+
+ /** 品牌 */
+ @Excel(name = "品牌")
+ @ApiModelProperty(name = "品牌", value = "品牌")
+ private Long brandId;
+
+ /**
+ * 查询构造器
+ */
+ public static ProjectInfo queryBuild( ProjectInfoQueryReq projectInfoQueryReq){
+ return ProjectInfo.builder()
+ .name(projectInfoQueryReq.getName())
+ .introduction(projectInfoQueryReq.getIntroduction())
+ .mianType(projectInfoQueryReq.getMianType())
+ .parentType(projectInfoQueryReq.getParentType())
+ .type(projectInfoQueryReq.getType())
+ .image(projectInfoQueryReq.getImage())
+ .carouselImages(projectInfoQueryReq.getCarouselImages())
+ .status(projectInfoQueryReq.getStatus())
+ .ruleId(projectInfoQueryReq.getRuleId())
+ .brandId(projectInfoQueryReq.getBrandId())
+ .build();
+ }
+
+ /**
+ * 添加构造器
+ */
+ public static ProjectInfo saveBuild(ProjectInfoSaveReq projectInfoSaveReq){
+ return ProjectInfo.builder()
+ .name(projectInfoSaveReq.getName())
+ .introduction(projectInfoSaveReq.getIntroduction())
+ .mianType(projectInfoSaveReq.getMianType())
+ .parentType(projectInfoSaveReq.getParentType())
+ .type(projectInfoSaveReq.getType())
+ .image(projectInfoSaveReq.getImage())
+ .carouselImages(projectInfoSaveReq.getCarouselImages())
+ .status(projectInfoSaveReq.getStatus())
+ .ruleId(projectInfoSaveReq.getRuleId())
+ .brandId(projectInfoSaveReq.getBrandId())
+ .build();
+ }
+
+ /**
+ * 修改构造器
+ */
+ public static ProjectInfo editBuild(Long id, ProjectInfoEditReq projectInfoEditReq){
+ return ProjectInfo.builder()
+ .id(id)
+ .name(projectInfoEditReq.getName())
+ .introduction(projectInfoEditReq.getIntroduction())
+ .mianType(projectInfoEditReq.getMianType())
+ .parentType(projectInfoEditReq.getParentType())
+ .type(projectInfoEditReq.getType())
+ .image(projectInfoEditReq.getImage())
+ .carouselImages(projectInfoEditReq.getCarouselImages())
+ .status(projectInfoEditReq.getStatus())
+ .ruleId(projectInfoEditReq.getRuleId())
+ .brandId(projectInfoEditReq.getBrandId())
+ .build();
+ }
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/ProjectSkuInfo.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/ProjectSkuInfo.java
new file mode 100644
index 0000000..d4c8e57
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/ProjectSkuInfo.java
@@ -0,0 +1,108 @@
+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.common.core.annotation.Excel;
+import com.muyu.common.core.web.domain.BaseEntity;
+import com.muyu.product.domain.req.ProjectSkuInfoEditReq;
+import com.muyu.product.domain.req.ProjectSkuInfoQueryReq;
+import com.muyu.product.domain.req.ProjectSkuInfoSaveReq;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.math.BigDecimal;
+
+/**
+ * 商品SKU对象 project_sku_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@TableName("project_sku_info")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "ProjectSkuInfo", description = "商品SKU")
+public class ProjectSkuInfo 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)
+ private Long projectId;
+
+ /** sku */
+ @Excel(name = "sku")
+ @ApiModelProperty(name = "sku", value = "sku", required = true)
+ private String sku;
+
+ /** 商品库存 */
+ @Excel(name = "商品库存")
+ @ApiModelProperty(name = "商品库存", value = "商品库存", required = true)
+ private Long stock;
+
+ /** 商品价格 */
+ @Excel(name = "商品价格")
+ @ApiModelProperty(name = "商品价格", value = "商品价格", required = true)
+ private BigDecimal price;
+
+ /** 规格图片 */
+ @Excel(name = "规格图片")
+ @ApiModelProperty(name = "规格图片", value = "规格图片", required = true)
+ private String image;
+
+ /**
+ * 查询构造器
+ */
+ public static ProjectSkuInfo queryBuild( ProjectSkuInfoQueryReq projectSkuInfoQueryReq){
+ return ProjectSkuInfo.builder()
+ .projectId(projectSkuInfoQueryReq.getProjectId())
+ .sku(projectSkuInfoQueryReq.getSku())
+ .stock(projectSkuInfoQueryReq.getStock())
+ .price(projectSkuInfoQueryReq.getPrice())
+ .image(projectSkuInfoQueryReq.getImage())
+ .build();
+ }
+
+ /**
+ * 添加构造器
+ */
+ public static ProjectSkuInfo saveBuild(ProjectSkuInfoSaveReq projectSkuInfoSaveReq){
+ return ProjectSkuInfo.builder()
+ .projectId(projectSkuInfoSaveReq.getProjectId())
+ .sku(projectSkuInfoSaveReq.getSku())
+ .stock(projectSkuInfoSaveReq.getStock())
+ .price(projectSkuInfoSaveReq.getPrice())
+ .image(projectSkuInfoSaveReq.getImage())
+ .build();
+ }
+
+ /**
+ * 修改构造器
+ */
+ public static ProjectSkuInfo editBuild(Long id, ProjectSkuInfoEditReq projectSkuInfoEditReq){
+ return ProjectSkuInfo.builder()
+ .id(id)
+ .projectId(projectSkuInfoEditReq.getProjectId())
+ .sku(projectSkuInfoEditReq.getSku())
+ .stock(projectSkuInfoEditReq.getStock())
+ .price(projectSkuInfoEditReq.getPrice())
+ .image(projectSkuInfoEditReq.getImage())
+ .build();
+ }
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/RuleAttrInfo.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/RuleAttrInfo.java
new file mode 100644
index 0000000..8e6449e
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/RuleAttrInfo.java
@@ -0,0 +1,103 @@
+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.common.core.annotation.Excel;
+import com.muyu.common.core.web.domain.BaseEntity;
+import com.muyu.product.domain.model.RuleAttrAddModel;
+import com.muyu.product.domain.req.RuleAttrInfoEditReq;
+import com.muyu.product.domain.req.RuleAttrInfoQueryReq;
+import com.muyu.product.domain.req.RuleAttrInfoSaveReq;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.util.Date;
+import java.util.function.Supplier;
+
+/**
+ * 规格详情对象 rule_attr_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@TableName("rule_attr_info")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "RuleAttrInfo", description = "规格详情")
+public class RuleAttrInfo 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)
+ private Long ruleId;
+
+ /** 类目名称 */
+ @Excel(name = "类目名称")
+ @ApiModelProperty(name = "类目名称", value = "类目名称")
+ private String name;
+
+ /** 规格值 */
+ @Excel(name = "规格值")
+ @ApiModelProperty(name = "规格值", value = "规格值")
+ private String attrValue;
+
+ /**
+ * 查询构造器
+ */
+ public static RuleAttrInfo queryBuild( RuleAttrInfoQueryReq ruleAttrInfoQueryReq){
+ return RuleAttrInfo.builder()
+ .ruleId(ruleAttrInfoQueryReq.getRuleId())
+ .name(ruleAttrInfoQueryReq.getName())
+ .attrValue(ruleAttrInfoQueryReq.getAttrValue())
+ .build();
+ }
+
+ /**
+ * 添加构造器
+ */
+ public static RuleAttrInfo saveBuild(RuleAttrInfoSaveReq ruleAttrInfoSaveReq){
+ return RuleAttrInfo.builder()
+ .ruleId(ruleAttrInfoSaveReq.getRuleId())
+ .name(ruleAttrInfoSaveReq.getName())
+ .attrValue(ruleAttrInfoSaveReq.getAttrValue())
+ .build();
+ }
+
+ /**
+ * 修改构造器
+ */
+ public static RuleAttrInfo editBuild(Long id, RuleAttrInfoEditReq ruleAttrInfoEditReq){
+ return RuleAttrInfo.builder()
+ .id(id)
+ .ruleId(ruleAttrInfoEditReq.getRuleId())
+ .name(ruleAttrInfoEditReq.getName())
+ .attrValue(ruleAttrInfoEditReq.getAttrValue())
+ .build();
+ }
+
+ public static RuleAttrInfo addModelBuild (RuleAttrAddModel ruleAttrAddModel, Supplier ruleId, Supplier createBy) {
+ return RuleAttrInfo.builder()
+ .ruleId(ruleId.get())
+ .name(ruleAttrAddModel.getName())
+ .attrValue(String.join(",", ruleAttrAddModel.getValueList()))
+ .createBy(createBy.get())
+ .createTime(new Date())
+ .build();
+ }
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/RuleInfo.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/RuleInfo.java
new file mode 100644
index 0000000..4484110
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/RuleInfo.java
@@ -0,0 +1,100 @@
+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.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;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.util.Date;
+import java.util.function.Supplier;
+
+/**
+ * 商品规格对象 rule_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@TableName("rule_info")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "RuleInfo", description = "商品规格")
+public class RuleInfo extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 主键 */
+ @TableId(value = "id",type = IdType.AUTO)
+ @ApiModelProperty(name = "主键", value = "主键")
+ private Long id;
+
+ /** 规格名称 */
+ @Excel(name = "规格名称")
+ @ApiModelProperty(name = "规格名称", value = "规格名称")
+ private String name;
+
+ /** 规格状态 */
+ @Excel(name = "规格状态")
+ @ApiModelProperty(name = "规格状态", value = "规格状态")
+ private String status;
+
+ /**
+ * 查询构造器
+ */
+ public static RuleInfo queryBuild( RuleInfoQueryReq ruleInfoQueryReq){
+ return RuleInfo.builder()
+ .name(ruleInfoQueryReq.getName())
+ .status(ruleInfoQueryReq.getStatus())
+ .build();
+ }
+
+ /**
+ * 添加构造器
+ */
+ public static RuleInfo saveBuild(RuleInfoSaveReq ruleInfoSaveReq){
+ return RuleInfo.builder()
+ .name(ruleInfoSaveReq.getName())
+ .status(ruleInfoSaveReq.getStatus())
+ .build();
+ }
+
+ /**
+ * 修改构造器
+ */
+ public static RuleInfo editBuild(Long id, RuleInfoEditReq ruleInfoEditReq){
+ return RuleInfo.builder()
+ .id(id)
+ .name(ruleInfoEditReq.getName())
+ .status(ruleInfoEditReq.getStatus())
+ .build();
+ }
+
+ /**
+ *
+ * @param ruleInfoAddModel 添加模型
+ * @param createBy 创建者
+ * @return 规格对象
+ */
+ public static RuleInfo addModelBuild (RuleInfoAddModel ruleInfoAddModel, Supplier createBy) {
+ return RuleInfo.builder()
+ .name(ruleInfoAddModel.getName())
+ .status(ruleInfoAddModel.getStatus())
+ .createBy(createBy.get())
+ .createTime(new Date())
+ .build();
+ }
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/base/CategoryBase.java b/muyu-modules/muyu-product/muyu-product-commo/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-commo/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-commo/src/main/java/com/muyu/product/domain/model/AttributeGroupSaveModel.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/model/AttributeGroupSaveModel.java
new file mode 100644
index 0000000..eecfb3f
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/model/AttributeGroupSaveModel.java
@@ -0,0 +1,55 @@
+package com.muyu.product.domain.model;
+
+import com.muyu.common.core.web.domain.BaseEntity;
+import com.muyu.product.domain.AttributeGroup;
+import com.muyu.product.domain.req.AttributeGroupSaveReq;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.util.List;
+
+
+
+/**
+ * @author DongZl
+ * @description: 属性组添加模型
+ * @Date 2024-2-28 下午 03:16
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class AttributeGroupSaveModel extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 组名称 */
+ private String name;
+
+ /** 状态 */
+ private String states;
+
+ /**
+ * 属性ID集合
+ */
+ private List attributeIdList;
+
+ public static AttributeGroupSaveModel saveReqBuild (AttributeGroupSaveReq req){
+ return AttributeGroupSaveModel.builder()
+ .name(req.getName())
+ .states(req.getStates())
+ .attributeIdList(req.getAttributeIdList())
+ .build();
+ }
+
+ public AttributeGroup buildAttributeGroup () {
+ return AttributeGroup.builder()
+ .name(this.getName())
+ .states(this.getStates())
+ .build();
+ }
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/model/CategoryInfoSaveModel.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/model/CategoryInfoSaveModel.java
new file mode 100644
index 0000000..1313247
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/model/CategoryInfoSaveModel.java
@@ -0,0 +1,75 @@
+package com.muyu.product.domain.model;
+
+import com.muyu.common.core.web.domain.TreeEntity;
+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;
+
+/**
+ * 品类信息对象 category_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class CategoryInfoSaveModel extends TreeEntity {
+
+ private static final long serialVersionUID = 1L;
+
+
+ /** 品类名称 */
+ 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 CategoryInfoSaveModel saveBuild(CategoryInfoSaveReq categoryInfoSaveReq, Supplier supplier){
+ return CategoryInfoSaveModel.builder()
+ .name(categoryInfoSaveReq.getName())
+ .image(categoryInfoSaveReq.getImage())
+ .start(categoryInfoSaveReq.getStart())
+ .introduction(categoryInfoSaveReq.getIntroduction())
+ .parentId(categoryInfoSaveReq.getParentId())
+ .attributeGroupIdList(categoryInfoSaveReq.getAttributeGroupIdList())
+ .attributeIdList(categoryInfoSaveReq.getAttributeIdList())
+ .brandIdList(categoryInfoSaveReq.getBrandIdList())
+ .createBy(supplier.get())
+ .createTime(new Date())
+ .build();
+ }
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/model/RuleAttrAddModel.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/model/RuleAttrAddModel.java
new file mode 100644
index 0000000..b4a8e44
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/model/RuleAttrAddModel.java
@@ -0,0 +1,43 @@
+package com.muyu.product.domain.model;
+
+import com.muyu.common.core.web.domain.BaseEntity;
+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;
+
+
+/**
+ * @author DongZl
+ * @description: 规格属性,添加模型
+ * @Date 2024-3-4 下午 02:28
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class RuleAttrAddModel extends BaseEntity {
+
+ /**
+ * 规格属性名称
+ */
+ private String name;
+
+ /**
+ * 规格属性值集合
+ */
+ private List valueList;
+
+ public static RuleAttrAddModel infoBuild (RuleAttrInfo ruleAttrInfo) {
+ return RuleAttrAddModel.builder()
+ .name(ruleAttrInfo.getName())
+ .valueList(Arrays.stream(ruleAttrInfo.getAttrValue().split(",")).toList())
+ .build();
+ }
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/model/RuleInfoAddModel.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/model/RuleInfoAddModel.java
new file mode 100644
index 0000000..44557e8
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/model/RuleInfoAddModel.java
@@ -0,0 +1,43 @@
+package com.muyu.product.domain.model;
+
+import com.muyu.common.core.web.domain.BaseEntity;
+import com.muyu.product.domain.req.RuleInfoSaveReq;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.util.List;
+
+/**
+ * @author DongZl
+ * @description: 规格保存模型
+ * @Date 2024-3-4 下午 02:33
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class RuleInfoAddModel extends BaseEntity {
+
+ /** 规格名称 */
+ private String name;
+
+ /** 规格状态 */
+ private String status;
+
+ /**
+ * 规格属性集合
+ */
+ private List 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-commo/src/main/java/com/muyu/product/domain/model/TemplateAttributeGroupModel.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/model/TemplateAttributeGroupModel.java
new file mode 100644
index 0000000..ca4d1e6
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/model/TemplateAttributeGroupModel.java
@@ -0,0 +1,59 @@
+package com.muyu.product.domain.model;
+
+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;
+
+/**
+ * @author DongZl
+ * @description: 共有属性组
+ * @Date 2024-3-6 下午 02:29
+ */
+@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-commo/src/main/java/com/muyu/product/domain/model/TemplateAttributeModel.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/model/TemplateAttributeModel.java
new file mode 100644
index 0000000..8cbeb02
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/model/TemplateAttributeModel.java
@@ -0,0 +1,36 @@
+package com.muyu.product.domain.model;
+
+import com.muyu.common.core.web.domain.BaseEntity;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * @author DongZl
+ * @description: 共有属性
+ * @Date 2024-3-6 下午 02:30
+ */
+@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-commo/src/main/java/com/muyu/product/domain/req/AttributeGroupEditReq.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/AttributeGroupEditReq.java
new file mode 100644
index 0000000..0148766
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/AttributeGroupEditReq.java
@@ -0,0 +1,35 @@
+package com.muyu.product.domain.req;
+
+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.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 属性组对象 attribute_group
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel(value = "AttributeGroupEditReq", description = "属性组")
+public class AttributeGroupEditReq extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 组名称 */
+ @ApiModelProperty(name = "组名称", value = "组名称", required = true)
+ private String name;
+
+ /** 状态 */
+ @ApiModelProperty(name = "状态", value = "状态", required = true)
+ private String states;
+
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/AttributeGroupQueryReq.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/AttributeGroupQueryReq.java
new file mode 100644
index 0000000..6ce5c4f
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/AttributeGroupQueryReq.java
@@ -0,0 +1,34 @@
+package com.muyu.product.domain.req;
+
+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.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 属性组对象 attribute_group
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel(value = "AttributeGroupQueryReq", description = "属性组")
+public class AttributeGroupQueryReq extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 组名称 */
+ @ApiModelProperty(name = "组名称", value = "组名称")
+ private String name;
+
+ /** 状态 */
+ @ApiModelProperty(name = "状态", value = "状态")
+ private String states;
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/AttributeGroupSaveReq.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/AttributeGroupSaveReq.java
new file mode 100644
index 0000000..becf126
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/AttributeGroupSaveReq.java
@@ -0,0 +1,46 @@
+package com.muyu.product.domain.req;
+
+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.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.util.List;
+
+/**
+ * 属性组对象 attribute_group
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel(value = "AttributeGroupSaveReq", description = "属性组")
+public class AttributeGroupSaveReq extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 属性组编号 */
+ @ApiModelProperty(name = "属性组编号", value = "属性组编号")
+ private Long id;
+
+ /** 组名称 */
+ @ApiModelProperty(name = "组名称", value = "组名称", required = true)
+ private String name;
+
+ /** 状态 */
+ @ApiModelProperty(name = "状态", value = "状态", required = true)
+ private String states;
+
+ /**
+ * 属性ID集合
+ */
+ @ApiModelProperty(name = "属性ID集合", value = "属性ID集合", required = true)
+ private List attributeIdList;
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/AttributeInfoEditReq.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/AttributeInfoEditReq.java
new file mode 100644
index 0000000..1706588
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/AttributeInfoEditReq.java
@@ -0,0 +1,38 @@
+package com.muyu.product.domain.req;
+
+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.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 商品属性对象 attribute_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel(value = "AttributeInfoEditReq", description = "商品属性")
+public class AttributeInfoEditReq extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 属性名 */
+ @ApiModelProperty(name = "属性名", value = "属性名", required = true)
+ private String name;
+
+ /** 分组 */
+ @ApiModelProperty(name = "分组", value = "分组")
+ private Long groupId;
+
+ @ApiModelProperty(name = "属性编码", value = "属性编码")
+ private String code;
+
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/AttributeInfoQueryReq.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/AttributeInfoQueryReq.java
new file mode 100644
index 0000000..e3e8b10
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/AttributeInfoQueryReq.java
@@ -0,0 +1,34 @@
+package com.muyu.product.domain.req;
+
+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.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 商品属性对象 attribute_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel(value = "AttributeInfoQueryReq", description = "商品属性")
+public class AttributeInfoQueryReq extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 属性名 */
+ @ApiModelProperty(name = "属性名", value = "属性名")
+ private String name;
+
+ @ApiModelProperty(name = "属性编码", value = "属性编码")
+ private String code;
+
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/AttributeInfoSaveReq.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/AttributeInfoSaveReq.java
new file mode 100644
index 0000000..01f6d9c
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/AttributeInfoSaveReq.java
@@ -0,0 +1,39 @@
+package com.muyu.product.domain.req;
+
+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.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 商品属性对象 attribute_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel(value = "AttributeInfoSaveReq", description = "商品属性")
+public class AttributeInfoSaveReq extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 属性编号 */
+
+ @ApiModelProperty(name = "属性编号", value = "属性编号")
+ private Long id;
+
+ /** 属性名 */
+
+ @ApiModelProperty(name = "属性名", value = "属性名", required = true)
+ private String name;
+
+ @ApiModelProperty(name = "属性编码", value = "属性编码")
+ private String code;
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/BrandInfoEditReq.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/BrandInfoEditReq.java
new file mode 100644
index 0000000..387d61d
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/BrandInfoEditReq.java
@@ -0,0 +1,42 @@
+package com.muyu.product.domain.req;
+
+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.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 品牌信息对象 brand_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel(value = "BrandInfoEditReq", description = "品牌信息")
+public class BrandInfoEditReq extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 品牌名称 */
+ @ApiModelProperty(name = "品牌名称", value = "品牌名称", required = true)
+ private String name;
+
+ /** LOGO */
+ @ApiModelProperty(name = "LOGO", value = "LOGO", required = true)
+ private String logo;
+
+ /** 是否启用 */
+ @ApiModelProperty(name = "是否启用", value = "是否启用", required = true)
+ private String start;
+
+ /** 介绍 */
+ @ApiModelProperty(name = "介绍", value = "介绍")
+ private String introduction;
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/BrandInfoQueryReq.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/BrandInfoQueryReq.java
new file mode 100644
index 0000000..4cbae45
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/BrandInfoQueryReq.java
@@ -0,0 +1,42 @@
+package com.muyu.product.domain.req;
+
+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.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 品牌信息对象 brand_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel(value = "BrandInfoQueryReq", description = "品牌信息")
+public class BrandInfoQueryReq extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 品牌名称 */
+ @ApiModelProperty(name = "品牌名称", value = "品牌名称")
+ private String name;
+
+ /** LOGO */
+ @ApiModelProperty(name = "LOGO", value = "LOGO")
+ private String logo;
+
+ /** 是否启用 */
+ @ApiModelProperty(name = "是否启用", value = "是否启用")
+ private String start;
+
+ /** 介绍 */
+ @ApiModelProperty(name = "介绍", value = "介绍")
+ private String introduction;
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/BrandInfoSaveReq.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/BrandInfoSaveReq.java
new file mode 100644
index 0000000..5008402
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/BrandInfoSaveReq.java
@@ -0,0 +1,51 @@
+package com.muyu.product.domain.req;
+
+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.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 品牌信息对象 brand_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel(value = "BrandInfoSaveReq", description = "品牌信息")
+public class BrandInfoSaveReq extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 主键 */
+
+ @ApiModelProperty(name = "主键", value = "主键")
+ private Long id;
+
+ /** 品牌名称 */
+
+ @ApiModelProperty(name = "品牌名称", value = "品牌名称", required = true)
+ private String name;
+
+ /** LOGO */
+
+ @ApiModelProperty(name = "LOGO", value = "LOGO", required = true)
+ private String logo;
+
+ /** 是否启用 */
+
+ @ApiModelProperty(name = "是否启用", value = "是否启用", required = true)
+ private String start;
+
+ /** 介绍 */
+
+ @ApiModelProperty(name = "介绍", value = "介绍")
+ private String introduction;
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/CategoryInfoEditReq.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/CategoryInfoEditReq.java
new file mode 100644
index 0000000..7c353a4
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/CategoryInfoEditReq.java
@@ -0,0 +1,42 @@
+package com.muyu.product.domain.req;
+
+import com.muyu.common.core.web.domain.TreeEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 品类信息对象 category_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel(value = "CategoryInfoEditReq", description = "品类信息")
+public class CategoryInfoEditReq extends TreeEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 品类名称 */
+ @ApiModelProperty(name = "品类名称", value = "品类名称", required = true)
+ private String name;
+
+ /** 图片 */
+ @ApiModelProperty(name = "图片", value = "图片", required = true)
+ private String image;
+
+ /** 是否启用 */
+ @ApiModelProperty(name = "是否启用", value = "是否启用", required = true)
+ private String start;
+
+ /** 介绍 */
+ @ApiModelProperty(name = "介绍", value = "介绍")
+ private String introduction;
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/CategoryInfoQueryReq.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/CategoryInfoQueryReq.java
new file mode 100644
index 0000000..448174c
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/CategoryInfoQueryReq.java
@@ -0,0 +1,42 @@
+package com.muyu.product.domain.req;
+
+import com.muyu.common.core.web.domain.TreeEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 品类信息对象 category_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel(value = "CategoryInfoQueryReq", description = "品类信息")
+public class CategoryInfoQueryReq extends TreeEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 品类名称 */
+ @ApiModelProperty(name = "品类名称", value = "品类名称")
+ private String name;
+
+ /** 图片 */
+ @ApiModelProperty(name = "图片", value = "图片")
+ private String image;
+
+ /** 是否启用 */
+ @ApiModelProperty(name = "是否启用", value = "是否启用")
+ private String start;
+
+ /** 介绍 */
+ @ApiModelProperty(name = "介绍", value = "介绍")
+ private String introduction;
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/CategoryInfoSaveReq.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/CategoryInfoSaveReq.java
new file mode 100644
index 0000000..71d1da9
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/CategoryInfoSaveReq.java
@@ -0,0 +1,67 @@
+package com.muyu.product.domain.req;
+
+import com.muyu.common.core.web.domain.TreeEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.util.List;
+
+/**
+ * 品类信息对象 category_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel(value = "CategoryInfoSaveReq", description = "品类信息")
+public class CategoryInfoSaveReq extends TreeEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 主键 */
+
+ @ApiModelProperty(name = "主键", value = "主键")
+ private Long id;
+
+ /** 品类名称 */
+
+ @ApiModelProperty(name = "品类名称", value = "品类名称", required = true)
+ private String name;
+
+ /** 图片 */
+
+ @ApiModelProperty(name = "图片", value = "图片", required = true)
+ private String image;
+
+ /** 是否启用 */
+
+ @ApiModelProperty(name = "是否启用", value = "是否启用", required = true)
+ private String start;
+
+ /** 介绍 */
+
+ @ApiModelProperty(name = "介绍", value = "介绍")
+ private String introduction;
+
+ /**
+ * 商品属性组关联ID
+ */
+ private List attributeGroupIdList;
+ /**
+ * 商品属性关联ID
+ */
+ private List attributeIdList;
+
+ /**
+ * 商品品牌组关联ID
+ */
+ private List brandIdList;
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/CommentInfoEditReq.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/CommentInfoEditReq.java
new file mode 100644
index 0000000..ca5a199
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/CommentInfoEditReq.java
@@ -0,0 +1,42 @@
+package com.muyu.product.domain.req;
+
+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.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 商品评论对象 comment_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel(value = "CommentInfoEditReq", description = "商品评论")
+public class CommentInfoEditReq extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 商品id */
+ @ApiModelProperty(name = "商品id", value = "商品id", required = true)
+ private Long projectId;
+
+ /** 评论 */
+ @ApiModelProperty(name = "评论", value = "评论")
+ private String comment;
+
+ /** 图片 */
+ @ApiModelProperty(name = "图片", value = "图片")
+ private String images;
+
+ /** 父类id */
+ @ApiModelProperty(name = "父类id", value = "父类id")
+ private String parentId;
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/CommentInfoQueryReq.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/CommentInfoQueryReq.java
new file mode 100644
index 0000000..2ea8193
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/CommentInfoQueryReq.java
@@ -0,0 +1,42 @@
+package com.muyu.product.domain.req;
+
+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.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 商品评论对象 comment_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel(value = "CommentInfoQueryReq", description = "商品评论")
+public class CommentInfoQueryReq extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 商品id */
+ @ApiModelProperty(name = "商品id", value = "商品id")
+ private Long projectId;
+
+ /** 评论 */
+ @ApiModelProperty(name = "评论", value = "评论")
+ private String comment;
+
+ /** 图片 */
+ @ApiModelProperty(name = "图片", value = "图片")
+ private String images;
+
+ /** 父类id */
+ @ApiModelProperty(name = "父类id", value = "父类id")
+ private String parentId;
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/CommentInfoSaveReq.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/CommentInfoSaveReq.java
new file mode 100644
index 0000000..cea3617
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/CommentInfoSaveReq.java
@@ -0,0 +1,51 @@
+package com.muyu.product.domain.req;
+
+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.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 商品评论对象 comment_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel(value = "CommentInfoSaveReq", description = "商品评论")
+public class CommentInfoSaveReq extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 主键 */
+
+ @ApiModelProperty(name = "主键", value = "主键")
+ private Long id;
+
+ /** 商品id */
+
+ @ApiModelProperty(name = "商品id", value = "商品id", required = true)
+ private Long projectId;
+
+ /** 评论 */
+
+ @ApiModelProperty(name = "评论", value = "评论")
+ private String comment;
+
+ /** 图片 */
+
+ @ApiModelProperty(name = "图片", value = "图片")
+ private String images;
+
+ /** 父类id */
+
+ @ApiModelProperty(name = "父类id", value = "父类id")
+ private String parentId;
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/CommentLikeInfoEditReq.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/CommentLikeInfoEditReq.java
new file mode 100644
index 0000000..b51501d
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/CommentLikeInfoEditReq.java
@@ -0,0 +1,34 @@
+package com.muyu.product.domain.req;
+
+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.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 评论点赞对象 comment_like_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel(value = "CommentLikeInfoEditReq", description = "评论点赞")
+public class CommentLikeInfoEditReq extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 评论id */
+ @ApiModelProperty(name = "评论id", value = "评论id", required = true)
+ private Long commentId;
+
+ /** 点赞人id */
+ @ApiModelProperty(name = "点赞人id", value = "点赞人id", required = true)
+ private Long userId;
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/CommentLikeInfoQueryReq.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/CommentLikeInfoQueryReq.java
new file mode 100644
index 0000000..8f3a6d6
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/CommentLikeInfoQueryReq.java
@@ -0,0 +1,34 @@
+package com.muyu.product.domain.req;
+
+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.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 评论点赞对象 comment_like_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel(value = "CommentLikeInfoQueryReq", description = "评论点赞")
+public class CommentLikeInfoQueryReq extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 评论id */
+ @ApiModelProperty(name = "评论id", value = "评论id")
+ private Long commentId;
+
+ /** 点赞人id */
+ @ApiModelProperty(name = "点赞人id", value = "点赞人id")
+ private Long userId;
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/CommentLikeInfoSaveReq.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/CommentLikeInfoSaveReq.java
new file mode 100644
index 0000000..0cb1c31
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/CommentLikeInfoSaveReq.java
@@ -0,0 +1,41 @@
+package com.muyu.product.domain.req;
+
+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.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 评论点赞对象 comment_like_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel(value = "CommentLikeInfoSaveReq", description = "评论点赞")
+public class CommentLikeInfoSaveReq extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 主键 */
+
+ @ApiModelProperty(name = "主键", value = "主键")
+ private Long id;
+
+ /** 评论id */
+
+ @ApiModelProperty(name = "评论id", value = "评论id", required = true)
+ private Long commentId;
+
+ /** 点赞人id */
+
+ @ApiModelProperty(name = "点赞人id", value = "点赞人id", required = true)
+ private Long userId;
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/ProjectInfoEditReq.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/ProjectInfoEditReq.java
new file mode 100644
index 0000000..1505976
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/ProjectInfoEditReq.java
@@ -0,0 +1,66 @@
+package com.muyu.product.domain.req;
+
+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.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 商品信息对象 project_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel(value = "ProjectInfoEditReq", description = "商品信息")
+public class ProjectInfoEditReq extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 商品名称 */
+ @ApiModelProperty(name = "商品名称", value = "商品名称")
+ private String name;
+
+ /** 商品描述 */
+ @ApiModelProperty(name = "商品描述", value = "商品描述")
+ private String introduction;
+
+ /** 主类型 */
+ @ApiModelProperty(name = "主类型", value = "主类型")
+ private String mianType;
+
+ /** 父类型 */
+ @ApiModelProperty(name = "父类型", value = "父类型")
+ private String parentType;
+
+ /** 商品类型 */
+ @ApiModelProperty(name = "商品类型", value = "商品类型")
+ private String type;
+
+ /** 商品图片 */
+ @ApiModelProperty(name = "商品图片", value = "商品图片")
+ private String image;
+
+ /** 商品轮播图 */
+ @ApiModelProperty(name = "商品轮播图", value = "商品轮播图")
+ private String carouselImages;
+
+ /** 商品状态 */
+ @ApiModelProperty(name = "商品状态", value = "商品状态")
+ private String status;
+
+ /** 规格 */
+ @ApiModelProperty(name = "规格", value = "规格")
+ private Long ruleId;
+
+ /** 品牌 */
+ @ApiModelProperty(name = "品牌", value = "品牌")
+ private Long brandId;
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/ProjectInfoQueryReq.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/ProjectInfoQueryReq.java
new file mode 100644
index 0000000..2562ea4
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/ProjectInfoQueryReq.java
@@ -0,0 +1,66 @@
+package com.muyu.product.domain.req;
+
+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.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 商品信息对象 project_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel(value = "ProjectInfoQueryReq", description = "商品信息")
+public class ProjectInfoQueryReq extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 商品名称 */
+ @ApiModelProperty(name = "商品名称", value = "商品名称")
+ private String name;
+
+ /** 商品描述 */
+ @ApiModelProperty(name = "商品描述", value = "商品描述")
+ private String introduction;
+
+ /** 主类型 */
+ @ApiModelProperty(name = "主类型", value = "主类型")
+ private String mianType;
+
+ /** 父类型 */
+ @ApiModelProperty(name = "父类型", value = "父类型")
+ private String parentType;
+
+ /** 商品类型 */
+ @ApiModelProperty(name = "商品类型", value = "商品类型")
+ private String type;
+
+ /** 商品图片 */
+ @ApiModelProperty(name = "商品图片", value = "商品图片")
+ private String image;
+
+ /** 商品轮播图 */
+ @ApiModelProperty(name = "商品轮播图", value = "商品轮播图")
+ private String carouselImages;
+
+ /** 商品状态 */
+ @ApiModelProperty(name = "商品状态", value = "商品状态")
+ private String status;
+
+ /** 规格 */
+ @ApiModelProperty(name = "规格", value = "规格")
+ private Long ruleId;
+
+ /** 品牌 */
+ @ApiModelProperty(name = "品牌", value = "品牌")
+ private Long brandId;
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/ProjectInfoSaveReq.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/ProjectInfoSaveReq.java
new file mode 100644
index 0000000..2af45a3
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/ProjectInfoSaveReq.java
@@ -0,0 +1,81 @@
+package com.muyu.product.domain.req;
+
+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.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 商品信息对象 project_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel(value = "ProjectInfoSaveReq", description = "商品信息")
+public class ProjectInfoSaveReq extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 主键 */
+
+ @ApiModelProperty(name = "主键", value = "主键")
+ private Long id;
+
+ /** 商品名称 */
+
+ @ApiModelProperty(name = "商品名称", value = "商品名称")
+ private String name;
+
+ /** 商品描述 */
+
+ @ApiModelProperty(name = "商品描述", value = "商品描述")
+ private String introduction;
+
+ /** 主类型 */
+
+ @ApiModelProperty(name = "主类型", value = "主类型")
+ private String mianType;
+
+ /** 父类型 */
+
+ @ApiModelProperty(name = "父类型", value = "父类型")
+ private String parentType;
+
+ /** 商品类型 */
+
+ @ApiModelProperty(name = "商品类型", value = "商品类型")
+ private String type;
+
+ /** 商品图片 */
+
+ @ApiModelProperty(name = "商品图片", value = "商品图片")
+ private String image;
+
+ /** 商品轮播图 */
+
+ @ApiModelProperty(name = "商品轮播图", value = "商品轮播图")
+ private String carouselImages;
+
+ /** 商品状态 */
+
+ @ApiModelProperty(name = "商品状态", value = "商品状态")
+ private String status;
+
+ /** 规格 */
+
+ @ApiModelProperty(name = "规格", value = "规格")
+ private Long ruleId;
+
+ /** 品牌 */
+
+ @ApiModelProperty(name = "品牌", value = "品牌")
+ private Long brandId;
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/ProjectSkuInfoEditReq.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/ProjectSkuInfoEditReq.java
new file mode 100644
index 0000000..b2c5d68
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/ProjectSkuInfoEditReq.java
@@ -0,0 +1,48 @@
+package com.muyu.product.domain.req;
+
+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.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.math.BigDecimal;
+
+/**
+ * 商品SKU对象 project_sku_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel(value = "ProjectSkuInfoEditReq", description = "商品SKU")
+public class ProjectSkuInfoEditReq extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 商品id */
+ @ApiModelProperty(name = "商品id", value = "商品id", required = true)
+ private Long projectId;
+
+ /** sku */
+ @ApiModelProperty(name = "sku", value = "sku", required = true)
+ private String sku;
+
+ /** 商品库存 */
+ @ApiModelProperty(name = "商品库存", value = "商品库存", required = true)
+ private Long stock;
+
+ /** 商品价格 */
+ @ApiModelProperty(name = "商品价格", value = "商品价格", required = true)
+ private BigDecimal price;
+
+ /** 规格图片 */
+ @ApiModelProperty(name = "规格图片", value = "规格图片", required = true)
+ private String image;
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/ProjectSkuInfoQueryReq.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/ProjectSkuInfoQueryReq.java
new file mode 100644
index 0000000..f8aac9b
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/ProjectSkuInfoQueryReq.java
@@ -0,0 +1,48 @@
+package com.muyu.product.domain.req;
+
+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.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.math.BigDecimal;
+
+/**
+ * 商品SKU对象 project_sku_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel(value = "ProjectSkuInfoQueryReq", description = "商品SKU")
+public class ProjectSkuInfoQueryReq extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 商品id */
+ @ApiModelProperty(name = "商品id", value = "商品id")
+ private Long projectId;
+
+ /** sku */
+ @ApiModelProperty(name = "sku", value = "sku")
+ private String sku;
+
+ /** 商品库存 */
+ @ApiModelProperty(name = "商品库存", value = "商品库存")
+ private Long stock;
+
+ /** 商品价格 */
+ @ApiModelProperty(name = "商品价格", value = "商品价格")
+ private BigDecimal price;
+
+ /** 规格图片 */
+ @ApiModelProperty(name = "规格图片", value = "规格图片")
+ private String image;
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/ProjectSkuInfoSaveReq.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/ProjectSkuInfoSaveReq.java
new file mode 100644
index 0000000..dea5752
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/ProjectSkuInfoSaveReq.java
@@ -0,0 +1,58 @@
+package com.muyu.product.domain.req;
+
+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.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.math.BigDecimal;
+
+/**
+ * 商品SKU对象 project_sku_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel(value = "ProjectSkuInfoSaveReq", description = "商品SKU")
+public class ProjectSkuInfoSaveReq extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 主键 */
+
+ @ApiModelProperty(name = "主键", value = "主键")
+ private Long id;
+
+ /** 商品id */
+
+ @ApiModelProperty(name = "商品id", value = "商品id", required = true)
+ private Long projectId;
+
+ /** sku */
+
+ @ApiModelProperty(name = "sku", value = "sku", required = true)
+ private String sku;
+
+ /** 商品库存 */
+
+ @ApiModelProperty(name = "商品库存", value = "商品库存", required = true)
+ private Long stock;
+
+ /** 商品价格 */
+
+ @ApiModelProperty(name = "商品价格", value = "商品价格", required = true)
+ private BigDecimal price;
+
+ /** 规格图片 */
+
+ @ApiModelProperty(name = "规格图片", value = "规格图片", required = true)
+ private String image;
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/RuleAttrInfoEditReq.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/RuleAttrInfoEditReq.java
new file mode 100644
index 0000000..a37a49d
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/RuleAttrInfoEditReq.java
@@ -0,0 +1,38 @@
+package com.muyu.product.domain.req;
+
+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.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 规格详情对象 rule_attr_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel(value = "RuleAttrInfoEditReq", description = "规格详情")
+public class RuleAttrInfoEditReq extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 规格id */
+ @ApiModelProperty(name = "规格id", value = "规格id", required = true)
+ private Long ruleId;
+
+ /** 类目名称 */
+ @ApiModelProperty(name = "类目名称", value = "类目名称")
+ private String name;
+
+ /** 规格值 */
+ @ApiModelProperty(name = "规格值", value = "规格值")
+ private String attrValue;
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/RuleAttrInfoQueryReq.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/RuleAttrInfoQueryReq.java
new file mode 100644
index 0000000..599c783
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/RuleAttrInfoQueryReq.java
@@ -0,0 +1,38 @@
+package com.muyu.product.domain.req;
+
+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.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 规格详情对象 rule_attr_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel(value = "RuleAttrInfoQueryReq", description = "规格详情")
+public class RuleAttrInfoQueryReq extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 规格id */
+ @ApiModelProperty(name = "规格id", value = "规格id")
+ private Long ruleId;
+
+ /** 类目名称 */
+ @ApiModelProperty(name = "类目名称", value = "类目名称")
+ private String name;
+
+ /** 规格值 */
+ @ApiModelProperty(name = "规格值", value = "规格值")
+ private String attrValue;
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/RuleAttrInfoSaveReq.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/RuleAttrInfoSaveReq.java
new file mode 100644
index 0000000..bf88bb5
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/RuleAttrInfoSaveReq.java
@@ -0,0 +1,46 @@
+package com.muyu.product.domain.req;
+
+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.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 规格详情对象 rule_attr_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel(value = "RuleAttrInfoSaveReq", description = "规格详情")
+public class RuleAttrInfoSaveReq extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 主键 */
+
+ @ApiModelProperty(name = "主键", value = "主键")
+ private Long id;
+
+ /** 规格id */
+
+ @ApiModelProperty(name = "规格id", value = "规格id", required = true)
+ private Long ruleId;
+
+ /** 类目名称 */
+
+ @ApiModelProperty(name = "类目名称", value = "类目名称")
+ private String name;
+
+ /** 规格值 */
+
+ @ApiModelProperty(name = "规格值", value = "规格值")
+ private String attrValue;
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/RuleInfoEditReq.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/RuleInfoEditReq.java
new file mode 100644
index 0000000..6bacf89
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/RuleInfoEditReq.java
@@ -0,0 +1,34 @@
+package com.muyu.product.domain.req;
+
+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.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 商品规格对象 rule_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel(value = "RuleInfoEditReq", description = "商品规格")
+public class RuleInfoEditReq extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 规格名称 */
+ @ApiModelProperty(name = "规格名称", value = "规格名称")
+ private String name;
+
+ /** 规格状态 */
+ @ApiModelProperty(name = "规格状态", value = "规格状态")
+ private String status;
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/RuleInfoQueryReq.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/RuleInfoQueryReq.java
new file mode 100644
index 0000000..13f7225
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/RuleInfoQueryReq.java
@@ -0,0 +1,34 @@
+package com.muyu.product.domain.req;
+
+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.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 商品规格对象 rule_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel(value = "RuleInfoQueryReq", description = "商品规格")
+public class RuleInfoQueryReq extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 规格名称 */
+ @ApiModelProperty(name = "规格名称", value = "规格名称")
+ private String name;
+
+ /** 规格状态 */
+ @ApiModelProperty(name = "规格状态", value = "规格状态")
+ private String status;
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/RuleInfoSaveReq.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/RuleInfoSaveReq.java
new file mode 100644
index 0000000..cb1e1cd
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/req/RuleInfoSaveReq.java
@@ -0,0 +1,41 @@
+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;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.util.List;
+
+/**
+ * 商品规格对象 rule_info
+ *
+ * @author DongZeLiang
+ * @date 2024-02-27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel(value = "RuleInfoSaveReq", description = "商品规格")
+public class RuleInfoSaveReq extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 规格名称 */
+ @ApiModelProperty(name = "规格名称", value = "规格名称")
+ private String name;
+
+ /** 规格状态 */
+ @ApiModelProperty(name = "规格状态", value = "规格状态")
+ private String status;
+
+ /**
+ * 规格属性集合
+ */
+ private List ruleAttrList;
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/resp/AttributeGroupPageResp.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/resp/AttributeGroupPageResp.java
new file mode 100644
index 0000000..7936caf
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/resp/AttributeGroupPageResp.java
@@ -0,0 +1,59 @@
+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 lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.util.List;
+import java.util.function.Function;
+
+/**
+ * @author DongZl
+ * @description: 属性组列表对象
+ * @Date 2024-2-28 下午 04:15
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class AttributeGroupPageResp extends BaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /** 属性组编号 */
+ private Long id;
+
+ /** 组名称 */
+ private String name;
+
+ /** 状态 */
+ private String states;
+
+ /**
+ * 属性对象集合
+ */
+ private List attributeInfoList;
+
+ public static AttributeGroupPageResp groupBuild (AttributeGroup attributeGroup, List attributeInfos) {
+ return AttributeGroupPageResp.builder()
+ .id(attributeGroup.getId())
+ .name(attributeGroup.getName())
+ .states(attributeGroup.getStates())
+ .attributeInfoList(attributeInfos)
+ .build();
+ }
+ public static AttributeGroupPageResp groupFunBuild (AttributeGroup attributeGroup, Function > function) {
+ return AttributeGroupPageResp.builder()
+ .id(attributeGroup.getId())
+ .name(attributeGroup.getName())
+ .states(attributeGroup.getStates())
+ .attributeInfoList(function.apply(attributeGroup.getId()))
+ .build();
+ }
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/resp/CategoryCommonElementResp.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/resp/CategoryCommonElementResp.java
new file mode 100644
index 0000000..36a0189
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/resp/CategoryCommonElementResp.java
@@ -0,0 +1,42 @@
+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;
+
+/**
+ * @author DongZl
+ * @description: 商品类别公共元素
+ * @Date 2024-3-6 下午 02:25
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class CategoryCommonElementResp extends BaseEntity {
+
+ /**
+ * 共有属性组
+ */
+ private List templateAttributeGroupList;
+
+ /**
+ * 共有属性
+ */
+ private List templateAttributeList;
+
+ /**
+ * 自有属性(所有未包含属性)
+ */
+ private List attributeList;
+
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/resp/CategoryParentCommonElementResp.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/resp/CategoryParentCommonElementResp.java
new file mode 100644
index 0000000..ba5576a
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/resp/CategoryParentCommonElementResp.java
@@ -0,0 +1,39 @@
+package com.muyu.product.domain.resp;
+
+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 java.util.List;
+
+/**
+ * @author DongZl
+ * @description: 类别父通用元素
+ * @Date 2024-3-1 上午 11:02
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class CategoryParentCommonElementResp {
+
+ /**
+ * 属性集合
+ */
+ private List attributeInfoList;
+
+ /**
+ * 属性组集合
+ */
+ private List attributeGroupList;
+
+ /**
+ * 品牌集合
+ */
+ private List brandInfoList;
+
+}
diff --git a/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/resp/RuleInfoResp.java b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/resp/RuleInfoResp.java
new file mode 100644
index 0000000..8596383
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-commo/src/main/java/com/muyu/product/domain/resp/RuleInfoResp.java
@@ -0,0 +1,48 @@
+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;
+
+/**
+ * @author DongZl
+ * @description: 规格返回结果集
+ * @Date 2024-3-4 下午 04:08
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+public class RuleInfoResp extends BaseEntity {
+
+ private Long id;
+
+ /** 规格名称 */
+ private String name;
+
+ /** 规格状态 */
+ private String status;
+
+ /**
+ * 规格属性集合
+ */
+ private List 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-remote/pom.xml b/muyu-modules/muyu-product/muyu-product-remote/pom.xml
new file mode 100644
index 0000000..cd0e7d3
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-remote/pom.xml
@@ -0,0 +1,29 @@
+
+
+ 4.0.0
+
+ com.muyu
+ muyu-product
+ 3.6.3
+
+
+ muyu-product-remote
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+
+
+ com.muyu
+ muyu-product-commo
+ 3.6.3
+
+
+
+
diff --git a/muyu-modules/muyu-product/muyu-product-server/pom.xml b/muyu-modules/muyu-product/muyu-product-server/pom.xml
new file mode 100644
index 0000000..6cad209
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-server/pom.xml
@@ -0,0 +1,117 @@
+
+
+ 4.0.0
+
+ com.muyu
+ muyu-product
+ 3.6.3
+
+
+ com.bwie
+ muyu-product-server
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+
+
+ com.muyu
+ muyu-product-commo
+ 3.6.3
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-config
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-sentinel
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+
+
+ io.springfox
+ springfox-swagger-ui
+ ${swagger.fox.version}
+
+
+
+
+ com.mysql
+ mysql-connector-j
+
+
+
+
+ com.muyu
+ muyu-common-datasource
+
+
+
+
+ com.muyu
+ muyu-common-datascope
+
+
+
+
+ com.muyu
+ muyu-common-log
+
+
+
+
+ com.muyu
+ muyu-common-swagger
+
+
+
+
+ ${project.artifactId}
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-deploy-plugin
+
+ true
+
+
+
+
+
+
+
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/MuYuProductApplication.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/MuYuProductApplication.java
new file mode 100644
index 0000000..3cd91cd
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/MuYuProductApplication.java
@@ -0,0 +1,17 @@
+package com.muyu.product;
+
+import com.muyu.common.security.annotation.EnableCustomConfig;
+import com.muyu.common.security.annotation.EnableMyFeignClients;
+import com.muyu.common.swagger.annotation.EnableCustomSwagger2;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@EnableCustomConfig
+@EnableCustomSwagger2
+@EnableMyFeignClients
+@SpringBootApplication
+public class MuYuProductApplication {
+ public static void main(String[] args) {
+ SpringApplication.run(MuYuProductApplication.class);
+ }
+}
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
new file mode 100644
index 0000000..8014ab6
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/BrandInfoController.java
@@ -0,0 +1,38 @@
+package com.muyu.product.controller;
+
+import com.muyu.common.core.domain.Result;
+import com.muyu.common.core.text.Convert;
+import com.muyu.common.core.web.controller.BaseController;
+import com.muyu.common.security.annotation.RequiresPermissions;
+import com.muyu.product.domain.BrandInfo;
+import com.muyu.product.domain.req.BrandInfoQueryReq;
+import com.muyu.product.service.BrandInfoService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@Api(tags = "品牌信息")
+@RestController
+@RequestMapping("/brand")
+public class BrandInfoController extends BaseController {
+
+ @Autowired
+ private BrandInfoService brandInfoService;
+
+ @ApiOperation("获取品牌信息列表")
+ @RequiresPermissions("product:brand:list")
+ @GetMapping("/list")
+ public Result list(BrandInfoQueryReq brandInfoQueryReq){
+ boolean isPage=brandInfoQueryReq.getParams().get("isPage") == null || Convert.toBool(brandInfoQueryReq.getParams().get("isPage"),true);
+ if(isPage){
+ startPage();
+ }
+ Listlist=brandInfoService.list(BrandInfo.queryBuild(brandInfoQueryReq));
+ return isPage ? getDataTable(list) : Result.success(list);
+ }
+}
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/BrandInfoMapper.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/BrandInfoMapper.java
new file mode 100644
index 0000000..4a9161e
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/BrandInfoMapper.java
@@ -0,0 +1,7 @@
+package com.muyu.product.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.muyu.product.domain.BrandInfo;
+
+public interface BrandInfoMapper extends BaseMapper {
+}
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/BrandInfoService.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/BrandInfoService.java
new file mode 100644
index 0000000..1b361aa
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/BrandInfoService.java
@@ -0,0 +1,11 @@
+package com.muyu.product.service;
+
+import com.muyu.product.domain.BrandInfo;
+
+import java.util.List;
+import java.util.Map;
+
+public interface BrandInfoService {
+
+ List list(BrandInfo brandInfo);
+}
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/banner.txt b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/banner.txt
new file mode 100644
index 0000000..0dd5eee
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/banner.txt
@@ -0,0 +1,2 @@
+Spring Boot Version: ${spring-boot.version}
+Spring Application Name: ${spring.application.name}
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/bootstrap.yml b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/bootstrap.yml
new file mode 100644
index 0000000..c01e17f
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/bootstrap.yml
@@ -0,0 +1,28 @@
+# Tomcat
+server:
+ port: 9302
+
+# Spring
+spring:
+ application:
+ # 应用名称
+ name: muyu-product
+ profiles:
+ # 环境配置
+ active: dev
+ cloud:
+ nacos:
+ discovery:
+ # 服务注册地址
+ server-addr: 111.231.174.71:8848
+ config:
+ # 配置中心地址
+ server-addr: 111.231.174.71:8848
+ # 配置文件格式
+ file-extension: yml
+ # 共享配置
+ shared-configs:
+ - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
+logging:
+ level:
+ com.muyu.product.mapper: DEBUG
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/logback.xml b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/logback.xml
new file mode 100644
index 0000000..69fb68b
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/logback.xml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+ ${log.pattern}
+
+
+
+
+
+ ${log.path}/info.log
+
+
+
+ ${log.path}/info.%d{yyyy-MM-dd}.log
+
+ 60
+
+
+ ${log.pattern}
+
+
+
+ INFO
+
+ ACCEPT
+
+ DENY
+
+
+
+
+ ${log.path}/error.log
+
+
+
+ ${log.path}/error.%d{yyyy-MM-dd}.log
+
+ 60
+
+
+ ${log.pattern}
+
+
+
+ ERROR
+
+ ACCEPT
+
+ DENY
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/AsAttributeGroupMapper.xml b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/AsAttributeGroupMapper.xml
new file mode 100644
index 0000000..05c468d
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/AsAttributeGroupMapper.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, group_id, attribute_id, remark, create_by, create_time, update_by, update_time from as_attribute_group
+
+
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/AsBrandProjectMapper.xml b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/AsBrandProjectMapper.xml
new file mode 100644
index 0000000..abfce3a
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/AsBrandProjectMapper.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, brand_id, project_id, remark, create_by, create_time, update_by, update_time from as_brand_project
+
+
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/AsCategoryAttributeGroupMapper.xml b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/AsCategoryAttributeGroupMapper.xml
new file mode 100644
index 0000000..7196d03
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/AsCategoryAttributeGroupMapper.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, category_id, attribute_group_id, remark, create_by, create_time, update_by, update_time from as_category_attribute_group
+
+
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/AsCategoryAttributeMapper.xml b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/AsCategoryAttributeMapper.xml
new file mode 100644
index 0000000..d5544af
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/AsCategoryAttributeMapper.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, category_id, attribute_id, remark, create_by, create_time, update_by, update_time from as_category_attribute
+
+
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/AsCategoryBrandMapper.xml b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/AsCategoryBrandMapper.xml
new file mode 100644
index 0000000..048317d
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/AsCategoryBrandMapper.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, category_id, brand_id, remark, create_by, create_time, update_by, update_time from as_category_brand
+
+
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/AsProductAttributeInfoMapper.xml b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/AsProductAttributeInfoMapper.xml
new file mode 100644
index 0000000..cd98362
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/AsProductAttributeInfoMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, product_id, attribute_id, value, create_by, create_time, updata_by, updata_time, remark from as_product_attribute_info
+
+
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/AttributeGroupMapper.xml b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/AttributeGroupMapper.xml
new file mode 100644
index 0000000..5edd11f
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/AttributeGroupMapper.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, name, states, create_by, create_time, updata_by, updata_time, remark from attribute_group
+
+
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/AttributeInfoMapper.xml b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/AttributeInfoMapper.xml
new file mode 100644
index 0000000..9d60cfe
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/AttributeInfoMapper.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, name, group_id, create_by, create_time, updata_by, updata_time, remark from attribute_info
+
+
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/BrandInfoMapper.xml b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/BrandInfoMapper.xml
new file mode 100644
index 0000000..eeeea6d
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/BrandInfoMapper.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, nam, logo, start, introduction, remark, create_by, create_time, update_by, update_time from brand_info
+
+
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/CategoryInfoMapper.xml b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/CategoryInfoMapper.xml
new file mode 100644
index 0000000..99be65b
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/CategoryInfoMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, name, image, parent_id, start, introduction, remark, create_by, create_time, update_by, update_time from category_info
+
+
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/CommentInfoMapper.xml b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/CommentInfoMapper.xml
new file mode 100644
index 0000000..9afe06e
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/CommentInfoMapper.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/CommentLikeInfoMapper.xml b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/CommentLikeInfoMapper.xml
new file mode 100644
index 0000000..c9c6376
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/CommentLikeInfoMapper.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/ProjectInfoMapper.xml b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/ProjectInfoMapper.xml
new file mode 100644
index 0000000..52ca6e6
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/ProjectInfoMapper.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, name, introduction, mian_type, parent_type, type, image, carousel_images, status, rule_id, brand_id, remark, create_by, create_time, update_by, update_time from project_info
+
+
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/ProjectSkuInfoMapper.xml b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/ProjectSkuInfoMapper.xml
new file mode 100644
index 0000000..de5ebe4
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/ProjectSkuInfoMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, project_id, sku, stock, price, image, remark, create_by, create_time, update_by, update_time from project_sku_info
+
+
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/RuleAttrInfoMapper.xml b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/RuleAttrInfoMapper.xml
new file mode 100644
index 0000000..3186330
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/RuleAttrInfoMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, rule_id, name, attr_value, remark, create_by, create_time, update_by, update_time from rule_attr_info
+
+
diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/RuleInfoMapper.xml b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/RuleInfoMapper.xml
new file mode 100644
index 0000000..70724b9
--- /dev/null
+++ b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/RuleInfoMapper.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, name, status, remark, create_by, create_time, update_by, update_time from rule_info
+
+
diff --git a/muyu-modules/muyu-product/pom.xml b/muyu-modules/muyu-product/pom.xml
new file mode 100644
index 0000000..e5c22a3
--- /dev/null
+++ b/muyu-modules/muyu-product/pom.xml
@@ -0,0 +1,28 @@
+
+
+ 4.0.0
+
+ com.muyu
+ muyu-modules
+ 3.6.3
+
+
+
+ muyu-product
+ pom
+
+ muyu-product-commo
+ muyu-product-remote
+ muyu-product-server
+ muyu-product-server
+
+
+
+ 17
+ 17
+ UTF-8
+
+
+
diff --git a/muyu-modules/muyu-system/src/main/resources/bootstrap.yml b/muyu-modules/muyu-system/src/main/resources/bootstrap.yml
index a66fd4c..2f48cc5 100644
--- a/muyu-modules/muyu-system/src/main/resources/bootstrap.yml
+++ b/muyu-modules/muyu-system/src/main/resources/bootstrap.yml
@@ -14,10 +14,10 @@ spring:
nacos:
discovery:
# 服务注册地址
- server-addr: 127.0.0.1:8848
+ server-addr: 111.231.174.71:8848
config:
# 配置中心地址
- server-addr: 127.0.0.1:8848
+ server-addr: 111.231.174.71:8848
# 配置文件格式
file-extension: yml
# 共享配置
diff --git a/muyu-visual/muyu-monitor/src/main/resources/bootstrap.yml b/muyu-visual/muyu-monitor/src/main/resources/bootstrap.yml
index 1276c8e..5bee78d 100644
--- a/muyu-visual/muyu-monitor/src/main/resources/bootstrap.yml
+++ b/muyu-visual/muyu-monitor/src/main/resources/bootstrap.yml
@@ -14,10 +14,10 @@ spring:
nacos:
discovery:
# 服务注册地址
- server-addr: 127.0.0.1:8848
+ server-addr: 111.231.174.71:8848
config:
# 配置中心地址
- server-addr: 127.0.0.1:8848
+ server-addr: 111.231.174.71:8848
# 配置文件格式
file-extension: yml
# 共享配置
diff --git a/pom.xml b/pom.xml
index fc97f1d..fa0afc5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -215,6 +215,7 @@
muyu-visual
muyu-modules
muyu-common
+ muyu-modules/muyu-product
pom