kratos 框架商城微服务实战之商品服务 (九)
本文最后更新于:2 个月前
大家好,今天咱们继续完善商品服务里的商品属性模块。
众所周知,一个电商的商品设计是比较复杂的,咱们这里不过多的深究商品设计的每个表是否合理,是否漏写之类的问题,主要是为了搞明白 kratos 的使用和微服务相关的调用关系。当然我真正的编写时也会尽可能的让此项目的商品设计合理一些。但大量的表设计呀,重复性的 curd 就不会在文章中体现了,具体的代码参看 GitHub 上的源码。当然你觉得不合理的地方,欢迎给项目提 PR。
注:竖排 … 代码省略,为了保持文章的篇幅简洁,我会将一些不必要的代码使用竖排的 . 来代替,你在复制本文代码块的时候,切记不要将 . 也一同复制进去。
⚠️ ⚠️ ⚠️ 接下来新增或修改的代码, wire 注入的文件中需要修改的代码,都不会再本文中提及了。例如 biz、service 层的修改,自己编写的过程中,千万不要忘记 wire 注入,更不要忘记,执行 make wire 命令,重新生成项目的 wire 文件 ⚠️ ⚠️ ⚠️
商品属性信息
商品属性参数信息如下图所示,按分组的方式进行管理,一般可以分为分组、属性及属性值。这些信息基本不影响商品 SKU,只是作为商品的一些参数信息展示。
编写代码
设计商品属性表
商品参数按分组的方式进行管理,除了设置一些分组选项名称以外,跟商品规格类似,其中的参数也是可以填写多个列表选项值的。比如:基本信息(属性组):机身材质(属性名称):玻璃后盖、塑胶边框(属性信息)。
- data 层新增
goods_attr.go
文件
定义数据库表结构
1 |
|
定义商品属性方法
goods.proto
文件新增创建方法:
1 |
|
修改 makefile 文件
之前好几篇文章都没具体说明如何使用 proto-gen-validate Validate 中间件生成代码进行参数校验,有好多小伙伴问,为啥 proto 中设置了 validate 的规则,但是不生效。这里说明一下。
- 修改服务 makefile 文件,在命令 api 后面加入:
1 |
|
修改完的内容如下:
1 |
|
- 修改
server
目录下grpc.go
文件如果是 http 服务就修改 http.go 文件
主要是在 grpc.Middleware
中添加 validate.Validator()
具体修改如下:
1 |
|
编写商品属性组相关方法
创建属性组
service
层新建goods_attr.go
文件
1 |
|
domain
层新建goods_attr.go
文件
定义接收参数结构体
1 |
|
biz
层新建goods_attr.go
文件
定义处理逻辑的方法
1 |
|
data
层新增CreateGoodsGroupAttr
方法
1 |
|
测试创建属性组
编写商品属性相关方法
创建属性信息
service
层goods_attr.go
文件新建方法
1 |
|
domain
层goods_attr.go
文件
新建处理商品属性信息的参数结构体
1 |
|
biz
层goods_attr.go
文件
新建处理商品属性信息的方法
1 |
|
data
层goods_attr.go
文件
实现 GoodsAttrRepo 定义的方法
1 |
|
测试新建属性信息
结束语
本篇只提供了一个商品属性信息的创建方法,其他方法没有在文章中体现,单元测试方法也没有编写,重复性的工作这里就不编写了,通过前几篇的文章,相信你可以自己完善剩余的方法。
下一篇就开始真正的商品创建了,敬请期待。
感谢您的耐心阅读,动动手指点个赞吧。
关注我获取更新
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!