仅涉及后端,全部目录看顶部专栏,代码、文档、接口路径在:
【Lilishop商城】记录一下B2B2C商城系统学习笔记~_清晨敲代码的博客-CSDN博客
全篇会结合业务介绍重点设计逻辑,其中重点包括接口类、业务类,具体的结合源代码分析,读起来也不复杂~
谨慎:源代码中有一些注释是错误的,有的注释意思完全相反,有的注释对不上号,我在阅读过程中就顺手更新了,并且在我不会的地方添加了新的注释,所以在读源代码过程中一定要谨慎啊!
目录
A1.计量单位
B1.M端(属于显式操作)
B2.S端(属于显式操作)
A2.品牌管理
B1.M端(属于显式操作)
A3.规格管理
B1.M端(属于显式操作)
B2.S端(属于显式操作)
A4.参数(强属于商品分类)
B1.M端(属于显式操作)
C1.商品分类参数组的接口
C2.商品分类参数组里面的参数的接口
B2.S端(属于显式操作)
A5.商品分类
B1.M端(属于显式操作)
C1.商品分类接口
C2.商品分类-品牌接口
C3.商品分类-规格接口
C4.商品分类-参数接口
B2.S端(属于显式操作)
C1.商品分类接口(里面包含了查询所关联品牌接口)
C2.商品分类-规格接口
C3.商品分类-参数组接口
A6.店铺分类
B1.S端(属于显式操作)
商品信息的管理主要在店铺S端,商品关联的附属信息例如商品分类等是由运营M端和店铺S端共同管理的,买方B端主要是查看、下单会用到,所以本篇不包含B端的查看接口,买方B端前台的接口回单开一篇文章说明的。【但是购物车、下单这些会跟随地订单一起说明的~】
开始前先说一下这几个模块之间的关联:
1.规格和商品分类里面的参数,虽然跟商品分类强关联,但是由于跟商品是弱关联(规格直接转化成json保存到goods_sku里面,参数转化成json保存到goods里面),所以他们的修改不影响分类和商品;计量单位也是,直接保存值到goods里面;
2.品牌直接与商品关联,并且还与商品分类关联,商品和商品分类又是直接对展示操作,所以删除/禁用品牌需要判断是否有关联的商品与分类,删除商品分类需要判断是呦呦关联的商品(禁用之所以不影响是因为禁不禁用不影响前端查看,到时候商品再重新选择罢了)
3.商品的相关联信息,例如图册、sku等等,都是依附于商品,并且不会单独修改。
接下来先从关联最小的模块说起~~~商品放到下一篇~~~
A1.计量单位
这个没啥好说的,就是计量单位的增查改删,而且商品选择时直接保存的文本内容不是id(没有必要绑定id,因为不需要那么强的绑定关系)
B1.M端(属于显式操作)
-
分页获取商品计量单位、获取商品计量单位、添加商品计量单位、编辑商品计量单位、删除商品计量单位
B2.S端(属于显式操作)
只在发布商品页面获取单位列表,这里后端用了分页,但是前端没有进行分页或懒加载,所以前端还是获取的所有~
- 分页获取商品计量单位
A2.品牌管理
运营M端管理品牌,然后将品牌绑定到商品分类里面。店铺S端发布商品时先选择商品分类,然后再获取该商品分类绑定的品牌,进行选择绑定。所以品牌是通过商品分类绑定到商品上面的。
品牌和商品分类的这一块的操作在商品分类(见商品分类)。
删除/禁用品牌需要判断是否有关联的商品与分类~~~这个放在代码开发中
B1.M端(属于显式操作)
运营M端管理品牌
- 通过id获取品牌详情、获取所有未禁用品牌、分页获取、新增品牌、更新数据、后台启用/禁用品牌、批量删除
获取所有未禁用品牌用于商品分类页面调用
B2.S端(此端不需要接口)
S端本身就是根据商品分类获取的品牌,所以未提供专门的controller,并且把这个接口放到了商品分类里面(见商品分类S端)
A3.规格管理
之前也说了规格与商品的联系,是可选择商品分类里面的规格的。而且,发布商品时的规格是可以自定义的,也就是说这里的规格就是个方便快捷的选择,自然不用与商品强关联。
规格和商品分类的这一块的操作在商品分类(见商品分类)。
B1.M端(属于显式操作)
规则值使用逗号分割更方便。
- 获取所有可用规格、分页搜索规格、保存规格、更改规格、批量删除
获取所有可用规格用于商品分类页面调用
B2.S端(属于显式操作)
S端的只会在发布商品页面查看
- 根据categoryId获取分类规格
A4.参数(强属于商品分类)
之前也提过了,商品分类与参数、规格、品牌关联,现在还差一个参数。
参数模块由参数组和参数组成,一个商品分类可以添加多个参数组;数据表见:li_category_parameter_group、li_parameters【这两个表的名字都放不到一起去,很难关联想像】
B1.M端(属于显式操作)
C1.商品分类参数组的接口
- 查询某分类下绑定的参数组信息、保存参数组数据、更新参数组数据、通过id删除参数组
C2.商品分类参数组里面的参数的接口
- 添加参数、编辑参数、通过id删除参数
但是要注意哦,代码里有bug, 参数里面应该有个参数类型,用来标注该参数是可选择的还是手动填写的,数据库表里面也有,但是实体类里面却没有这个字段,所以最终保存时这个参数就是null,如果想要恢复使用可自行添加
B2.S端(属于显式操作)
S端也是根据商品分类获取的,并且只能编辑参数值,不能自定义参数项。
S端的只会在发布商品页面查看。
- 查询某分类下绑定的参数信息
A5.商品分类
商品分类与参数、规格、品牌关联,并且关联操作与分类的增查改删是分开的,所以商品分类单独的controller接口,其余的关联有自己的controller接口
B1.M端(属于显式操作)
C1.商品分类接口
- 查询某分类下的全部子分类列表、添加商品分类、修改商品分类、通过id删除分类、后台 禁用/启用 分类
C2.商品分类-品牌接口
- 查询某分类下绑定的品牌信息、保存某分类下绑定的品牌信息
C3.商品分类-规格接口
- 查询某分类下绑定的规格信息、保存某分类下绑定的规格信息
C4.商品分类-参数接口
就是A4.里面的参数接口~
B2.S端(属于显式操作)
C1.商品分类接口(里面包含了查询所关联品牌接口)
店铺S端发布商品时先获取商品分类,这个商品分类时注册时选择的经营分类里面的,不是平台所有的哦~
- 获取店铺经营的分类、获取所选分类关联的品牌信息
C2.商品分类-规格接口
- 查询某分类下绑定的规格信息
C3.商品分类-参数组接口
- 查询某分类下绑定的参数信息
A6.店铺分类
店铺分类时只属于店铺管理的,用于在B端前台店铺主页展示,这个就很简单了。是按照层级分类。
在业务逻辑上来说,发布商品时可以绑定店铺分类,而删除店铺分类时,绑定他的商品不会有影响,因为在任意端不会影响查看~所以不会强关联影响~~~
B1.S端(属于显式操作)
- 获取当前店铺商品分类列表、获取店铺商品分类详情、添加店铺商品分类、修改店铺商品分类、删除店铺商品分类