1.图例如下
2.对应sql设计
2.1 属性分组
create table pms_attr_group
(
attr_group_id bigint not null auto_increment comment '分组id',
attr_group_name char(20) comment '组名',
sort int comment '排序',
descript varchar(255) comment '描述',
icon varchar(255) comment '组图标',
catelog_id bigint comment '所属分类id',
primary key (attr_group_id)
);
alter table pms_attr_group comment '属性分组';
2.2 属性
create table pms_attr
(
attr_id bigint not null auto_increment comment '属性id',
attr_name char(30) comment '属性名',
search_type tinyint comment '是否需要检索[0-不需要,1-需要]',
`value_type` tinyint(4) DEFAULT NULL COMMENT '值类型[0-为单个值,1-可以选择多个值]',
`icon` varchar(255) DEFAULT NULL COMMENT '属性图标',
`value_select` char(255) DEFAULT NULL COMMENT '可选值列表[用逗号分隔]',
`attr_type` tinyint(4) DEFAULT NULL COMMENT '属性类型[0-销售属性,1-基本属性,2-既是销售属性又是基本属性]',
enable bigint comment '启用状态[0 - 禁用,1 - 启用]',
catelog_id bigint comment '所属分类',
show_desc tinyint comment '快速展示【是否展示在介绍上;0-否 1-是】,在sku中仍然可以调整',
primary key (attr_id)
);
alter table pms_attr comment '商品属性';
2.3 属性&属性分组关联
create table pms_attr_attrgroup_relation
(
id bigint not null auto_increment comment 'id',
attr_id bigint comment '属性id',
attr_group_id bigint comment '属性分组id',
attr_sort int comment '属性组内排序',
primary key (id)
);
alter table pms_attr_attrgroup_relation comment '属性&属性分组关联';
2.4 属性和属性值
create table pms_product_attr_value
(
id bigint not null auto_increment comment 'id',
spu_id bigint comment '商品id',
attr_id bigint comment '属性id',
attr_name varchar(200) comment '属性名',
attr_value varchar(200) comment '属性值',
attr_sort int comment '顺序',
quick_show tinyint comment '快速展示【是否展示在介绍上;0-否 1-是】',
primary key (id)
);
alter table pms_product_attr_value comment 'spu属性值';
2.代码设计示例
@Data
public class SkuItemVo {
//其他属性...
//5、获取spu的规格参数信息
List<SpuItemAttrGroupVo> groupAttrs;
@Data
public static class SpuItemAttrGroupVo{
//组名
private String groupName;
private List<SpuBaseAttrVo> attrs;
}
@Data
public static class SpuBaseAttrVo{
//属性名
private String attrName;
//属性值,如果是多个值,可将String改成List<String>,
//如果是值是对象,可将String改成对应类,如User等
private String attrValue;
}
}
二、模型抽取
先整体理清思路,思路或者步骤可以先写下来,再以此来写代码
(1)根据要开发的某个功能,找出对应的前端页面
(2)先整体分析对应的前端页面需要开发哪些小功能
(3)再分析每个小功能需要涉及到哪些字段,这些字段需要到哪些表获取(表与实体类对应关系)
(3)