---Java中台项目,Web开发也能面向对象编程,拒绝面条代码。---
数据库设计
-
目前已经有54个表
-
使用 MySQL Workbench 打开
包含的数据库表有用户体系,权限控制体系,店铺,商品,订单,消息通知体系,异步任务等等,持续更新中......
系统设计文档
-
使用FreeMind或者XMind打开
包含数据库设计文档,系统约束说明,专有名词说明等等,持续更新中......
wiki
模块简介
- foundation-lang:定义了很多工具类,常用的与业务无关的基础类,比如,树形结构,Snowflake唯一ID生成器等等。没有数据库相关的维护。
- foundation-store: 维护店铺模块
- foundation-item: 维护Item模块,Item可以表示很多概念,比如最常见的商品
- foundation-commons:用于维护与业务无关,通用的数据库表,比如维护email,phone,通用的实体属性等
- foundation-user:维护用户体系,最主要的就是维护数据库表的完整性
- foundation-security:维护权限控制体系
- 未来还有订单体系,消息通知体系等等,持续更新中......
如何搭建完整系统
比如想做一个电商系统,则引入foundation-lang,foundation-commons,foundation-user,foundation-security,foundation-store,foundation-item等模块即可
推荐的优势
- 数据库中台项目,不耦合业务,基于这个中台可以发展出各种业务
- 像使用开源组件一样,100%面向对象编程,绝对不是dao,mapper这样一路下来的面条代码
- 数据库设计很抽象,不为特点业务开发,比如像权限体系,很多都是user-role这样的模式,而我们这里使用subject,target,action等这样的抽象概念,参考JAAS,几乎可以表示所有的权限体系。
- 丰富的文档,注释
简介
建房子需要打地基,软件开发也一样,优先的基础设施才能支撑复杂的业务。这个项目不是开箱即用的成品软件,而是一个中台项目,主要关注开发过程中常用的基本组件定义,包括
- 数据库设计,比如电商系统相关数据库设计,包括店铺,商品,订单,仓库等等
- 常用的模型抽象定义和实现,比如权限系统数据库设计,代码实现;消息通知模块数据库设计,代码实现等等
- 常用的工具代码,比如在数据库设计时通常使用ID/PID表示层级结构,这样的结构是可以统一生成树形结构的,包括给前端生成方便展示的树形结构
- 尽量使用正确的英文单词,在数据库设计以及程序代码命名时,如果开发时间太紧,通常很多就是在百度翻译下,很多时候,可能使用错了英文单词,但是,一旦使用,基本上就很难再有机会改动了,比如数据库表名,列表,在业务上线后,没有特别原因,你敢再去改动吗?因此,在这里,数据库命名的每个英文单词都经过很多验证的,比如看google,amazon同类功能中使用哪些单词,比如在youtube上搜索相关单词,看国外(主要是美国)是如何使用这个单词的,一图抵过千言万语,好的名词也能更好的表达意思
- 定义基本的约束,比如在数据库设计中,所有数据ID都不能是0,因为0倍用于特殊用途;比如主键ID预留一个范围的值给系统数据使用,等等,虽然看上去很简单,但是积少成多,并且文档化,这些看上去小的东西也会发挥大作用
这些东西很多人都想做,但是由于业务时间太紧,今天没做,明天没做,最后就再也不好做起来了,如果在业务系统还没开始之前,就开始做好这些事情,就像修房子之前就打好地基一样,后续开发和维护就会顺畅很多。