Go项目实战-购物车功能的核心接口开发

本节我们开始商城项目购物车模块的开发,本节大纲如下:

6d91192f3faec450ed9d3ab1dcb76d27.jpeg

本节内容节选自我的专栏《Go项目搭建和整洁开发实战》请扫码订阅专栏。图片

专栏已更新40余节,重点章节如下,订阅后在小程序和浏览器上都能使用。

17f459c759518659559bea950feeab80.png

购物车功能分析

购物车作为商品和订单的中间角色,让用户有机会一次性选购多个商品后再进行下单结账。

首先我们分析一下购物车都有哪些功能,其实从上面的思维导图列出来的分支我们就能看出来,基本上购物车都会有下面这些功能:

  • 添加购物车

  • 修改购物车的购物项

  • 删除购物车的购物项

  • 查看购物车中的购物项列表

  • 查看购物结算信息

我们在项目的需求分析章节中,分析过购物车和其他业务实体的关联,以及它自身内部细节,并且推演出了它在数据库中的表结构如下:

918ca1539c69ac5be1bfa641aba4be3f.png

所以在实现购物车功能时,都是围绕shopping_cart_items这个表做的文章。这里我重点提一下购物车几个功能中需要注意的用户交互细节。

首先是修改购物项,这个功能只允许我们修改购物项对应的商品数量。而且每次请求只能修改一个购物项,比如下面这个美团外卖上我添加了几个商品到购物车,在购物车页面中修改购物时,每次只能单独对一个商品进行加减。

bc05cbbedb55712ff7d9d55a84762439.png

有类似逻辑的还有购物车的删除,也是每次只能删除购物车中的一个购物项,删除对应的左滑交互相信大家都已经很熟悉了。

0e639100769172966f986c56f66d036a.png

我们再来看购物车结算功能,购物车的结算为了保障数据一致性还是应该由服务端来做,包括能使用的优惠券、参与的满减活动等等在结算时都由服务端考虑进去后再计算实际金额,客户端最好不要参与计算,否则极有可能出现算错账的问题(关于满减、优惠券,我们再下一节在购物车实现中引入职责链模式后再去实现,本节就是一个比较简单的结算信息的计算)。

除此之外还有一点是,我们结算时有可能不结算购物车中的某个购物项,比如像下面这样,最后一个商品没有选择结算。

a7d92542fc18ae61c31ed09363eaf269.jpeg

那么此时就要求购物车结算这个功能,不能是服务端去读取用户当前在shopping_cart_items表中的购物项,而是需要让客户端把参与结算的购物项的ID传上来,服务端再去结算结算信息。

好了购物车的功能及需要注意交互和实现方式的功能细节我们就差不多讲完了,接下来我们去实现功能吧,为了控制篇幅,我们简单的功能就一带而过,大家可以去项目中看代码,在文章中主要突出讲解一些重点代码。

本文后续内容请扫码订阅专栏阅读完整版。

图片

加入专栏后除了能获得完整版教程,更有配套的实战项目,我在其中用git tag版本编排好了每节教程对应的代码更新,让你能更容易地追踪项目开发过程中的每一处代码变更。

比如加入项目后访问https://github.com/go-study-lab/go-mall/compare/c14.2...c15.1可以查看本节更新的所有代码。

0e81713e54617677b2d4109f0612302f.png


下一节我们通过引入职责链模式实现一个功能更完善的购物车结算功能,未来即使有满减、优惠券等各种促销活动我们也能通过把他们作为职责链的一环引入到流程中。

《Go项目搭建和整洁开发实战》专栏分为五大部分,重点章节如下

0122a8098b350c9d012cd416b198802f.png
  • 第一部分介绍让框架变得好用的诸多实战技巧,比如通过自定义日志门面让项目日志更简单易用、支持自动记录请求的追踪信息和程序位置信息、通过自定义Error在实现Go error接口的同时支持给给错误添加错误链,方便追溯错误源头。

  • 第二部分:讲解项目分层架构的设计和划分业务模块的方法和标准,让你以后无论遇到什么项目都能按这套标准自己划分出模块和逻辑分层。后面几个部分均是该部分所讲内容的实践。

  • 第三部分:设计实现一个套支持多平台登录,Token泄露检测、同平台多设备登录互踢功能的用户认证体系,这套用户认证体系既可以在你未来开发产品时直接应用

  • 第四部分:商城app C端接口功能的实现,强化分层架构实现的讲解,这里还会讲解用责任链、策略和模版等设计模式去解决订单结算促销、支付方式支付场景等多种多样的实际问题。

  • 第五部分:单元测试、项目Docker镜像、K8s部署和服务保障相关的一些基础内容和注意事项

扫描上方二维码或者访问https://xiaobot.net/p/golang即刻订阅

此外想更详细地了解专栏内容,或者希望专栏有优惠时能提前告知你,都可以添加下面我的微信

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值