【Lilishop商城】No4-6.业务逻辑的代码开发,涉及到:接口入参、出参开发逻辑,及POJO的各种总结

 仅涉及后端,全部目录看顶部专栏,代码、文档、接口路径在: 

【Lilishop商城】记录一下B2B2C商城系统学习笔记~_清晨敲代码的博客-CSDN博客


全篇会结合业务介绍重点设计逻辑,其中重点包括接口类、业务类,具体的结合源代码分析,源码读起来也不复杂~

谨慎:源代码中有一些注释是错误的,有的注释意思完全相反,有的注释对不上号,我在阅读过程中就顺手更新了,并且在我不会的地方添加了新的注释,所以在读源代码过程中一定要谨慎啊!

目录

A1.接口入参

B1.新增类型

B2.修改类型

C1.修改业务全信息

C2.修改某几项信息

B3.删除类型

B4.查找类型

A2.接口出参

B1.新增、修改、删除类型

B2.查找类型

A3.各种pojo类型(可跳过)

B1.PO=entity 实体类(必包含)

B2.BO 业务对象(可省略)

B3.BTO 数据传输对象

B4.VO 视图模型对象(可省略)


在前面的 No4 里面没有讲过这个,是因为前面重点是登录逻辑,比较散,所以就放到这一篇单独记录接口入参出参,后面的商品模块会用到。【有遗漏的,后面随时修改记录~~~】

接口基本就是四种:增、删、改、查。我们也从这四种分析。

A1.接口入参

B1.新增类型

接口入参主要分为一下三种类型:

  1. 与其他表无关联的,基本数据类型的业务基本信息;
  2. 与其他表关联的业务基本信息,可理解为外键;
  3. 业务校验/判断的字段;
  4. 引用类型的业务基本信息(可以包含以上三种);

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的。

猜你喜欢

转载自blog.csdn.net/vaevaevae233/article/details/128608879