仅涉及后端,全部目录看顶部专栏,代码、文档、接口路径在:
【Lilishop商城】记录一下B2B2C商城系统学习笔记~_清晨敲代码的博客-CSDN博客
全篇会结合业务介绍重点设计逻辑,其中重点包括接口类、业务类,具体的结合源代码分析,源码读起来也不复杂~
谨慎:源代码中有一些注释是错误的,有的注释意思完全相反,有的注释对不上号,我在阅读过程中就顺手更新了,并且在我不会的地方添加了新的注释,所以在读源代码过程中一定要谨慎啊!
目录
在前面的 No4 里面没有讲过这个,是因为前面重点是登录逻辑,比较散,所以就放到这一篇单独记录接口入参出参,后面的商品模块会用到。【有遗漏的,后面随时修改记录~~~】
接口基本就是四种:增、删、改、查。我们也从这四种分析。
A1.接口入参
B1.新增类型
接口入参主要分为一下三种类型:
- 与其他表无关联的,基本数据类型的业务基本信息;
- 与其他表关联的业务基本信息,可理解为外键;
- 业务校验/判断的字段;
- 引用类型的业务基本信息(可以包含以上三种);
1.与其他表无关联的,基本数据类型的业务基本信息;
这些属性字段是属于基本数据类型的(String、Double、Integer 等等),并且是在数据表里有对应的字段的,例如:商品的商品名称、商品价格等;
2.与其他表关联的业务基本信息,可理解为外键;
这些属性字段是属于其他表的唯一标识的,可以理解为外键,这类属性大多用于有单独业务表的字段。因为主要保存外键信息,所以大多是 String 类型的,也可以使用集合、数组接收。例如:商品的商品分类、商品图册等;
3.业务校验/判断的字段;
这类属性字段,不是业务基本信息,不会存到数据表里面,大多是为了简化判断、提供校验而添加的字段,有的是前端控制传值,有的是后端处理时赋值;
4.引用类型的业务基本信息;
这个放到了最后来说,首先他肯定是业务基本信息的,也就是必要的信息,主要用于复杂的数据或者批量数据。可以直接使用引用对象来表示,也可以结合集合(List、Map等)来使用。例如:商品的商品参数、商品sku信息等;
这一类型可以包含以上三种类型,因为他是使用引用对象类型的嘛,所以属于pojo类,所以是可以结合以上三种类型的哦~~~
我们先以商品的信息为例,下面截图说明:
具体的看代码 GoodsStoreController 类。
B2.修改类型
修改的接口会有些多,主要分为以下两类;
C1.修改业务全信息
这个就是我们常见的"编辑",与新增参入参是相似的,就是修改业务的全部信息,这里就不再复述了,参照 A1 .B1 .。
C2.修改某几项信息
这个顾名思义就是修改几项信息,比如修该商品状态,只需要商品唯一标识和状态值就可以,所以可以直接传参指定几项字段,如果字段很多也可以传值引用对象。
例如:GoodsStoreController#freight 修改运费模板,这个方法,就是传递商品id和模板id。 GoodsStoreController#updateStocks 修改库存,这个方法,就是传递的引用类型的数据。
B3.删除类型
这个就很简单啦,只需要传参业务唯一标识就好了,后端直接硬删除,后端也可以软删除~
例如:GoodsStoreController#deleteGoods 删除商品,这个方法,就是传递商品id和模板id。
B4.查找类型
查找类型的,使用引用对象类型或者所参数都行,但是如果查找的字段条件可以复用,那么我们肯定要是用pojo引用对象类来接收参数了。
例如:分页的查找中,页码、页数等都是统一会有的,所以可以复用的。 GoodsStoreController#getByPage 方法入参就是引用类型的,其中里面的引用类型还继承了公共的分页VO~
A2.接口出参
出参主要分为两类,新增、修改、删除是一类,查找是一类;
B1.新增、修改、删除类型
这一类主要有两种情况操作成功返回成功信息、操作失败返回异常,一般不需要返回数据,也就是不返回data,只需要返回code和msg即可。
例如:GoodsStoreController#save 方法,成功返回 ResultUtil.success(),异常会被 GlobalControllerExceptionHandler 拦截,返回 ResultUtil.error(ResultCode.ERROR.code(), errorMsg)
B2.查找类型
这一类也是主要有两种情况操作成功返回成功信息、操作失败返回异常,操作成功一定会返回数据的,也就是会返回data,同时也需要返回code和msg。
例如:GoodsStoreController#get 方法,成功返回 ResultUtil.data(goods),操作异常和上方一样
A3.各种pojo类型(可跳过)
详细的可以看看这篇,很详细也有举例说明,就是看起来有点标题党~~~:一篇文章讲清楚VO,BO,PO,DO,DTO的区别 - 知乎
按照我的理解总结一下
B1.PO=entity 实体类(必包含)
就是实体类,对应数据表,没啥好说的
B2.BO 业务对象(可省略)
是属于后端业务逻辑的辅助数据,是在PO对象基础上添加了其他数据的,或者多个PO对象结合的,复杂业务的会使用到,简单的基本用不到。
B3.BTO 数据传输对象
通常是用于前后端之间的数据传输,可以作为请求入参和出参。他的意义是要能够完整的表达一个业务模块,所以通常用于接口入参。
B4.VO 视图模型对象(可省略)
就是需要展示的数据,是由后端传给前端的,在前后端分离架构中,通常是json类型的数据。如果不复杂或者展示的数据与业务本身差距不大,可以直接使用PO或者DTO的。