重构电商中台定义之产品分类设计

本文主要分享下电商类目的设计,结合公司的业务,为了保密性一些设计方案会引用网上一些大佬的思路,站在前人的肩膀上,对我学习到的知识进行归纳总结,诸多错误,欢迎大家批评指正

电商系统大家应该都比较熟悉,在天猫和京东购物去浏览商品,我们可以看到不同的产品分类

 从图中我们可以大致了解到,商品类目分为一级分类、二级分类、三级分类

当我们点击手机这一分类时,进入到

我们可以看到相应的品牌和规格,至此基于面向对象的思维,我们首先要考虑对象与对象之间的关系,从上面的描述中我们能抽象出以下几个对象:产品分类,品牌,规格,产品分类与品牌是1对多关系,产品分类与规格是多对多关系

后台管理界面:

从产品分类角度,我们可以确认它的几个关联设置,某一分类下关联了多少个品牌,某一分类关联规格,比如颜色、大小等

规格由分类统一管理

关系图:

总结:附上网上一副图

接下来进行数据库表设计:

为什么品牌会关联店铺呢,我们看下淘宝:选数码->电脑分类下的游戏主机选intel品牌就能看到有哪些卖家在售这款商品

 

分析清楚了对象之间的关系,在领域驱动中比较关键的一步,就是要考虑每个抽象出来的对象本身有什么行为,也就是对应对象有什么方法。也就是说对象的行为只能对象本身去操作,外部对象只能调用对象提供的方法,外部对象不能直接操作对象。

@Entity
@Data
public class Category extends AbstractEntity {

    @Id
    @GeneratedValue
    private Long categoryId;

    private String categoryName;

    private Integer level;

    private Long parentId;

    private Long rootId;

    private Integer leafed;

    private Integer sort;

}
@Entity
@Data
public class Brand extends AbstractEntity {

    @Id
    @GeneratedValue
    private Long brandId;

    private String brandName;

    private char firstEn;

    private Long categoryId;

    private Long shopId;

    private ApplyStatus applyStatus;

    private String rejectCause;

    /** 品牌图片标识**/
    private String brandImageUrl;

    private Integer sort;

    /** 授权结束时间**/
    private Date useEndTime;

}
@Entity
@Data
public class CategorySpec extends AbstractEntity {

    @Id
    @GeneratedValue
    private Long categorySpecId;

    private Long categoryId;

    private String categoryName;

    private Long specId;

    private String specName;

}
@Entity
@Data
public class Spec extends AbstractEntity {


    @Id
    @GeneratedValue
    private Long specId;

    private String specName;

    private Long categoryId;

    private Integer sort;

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值