up:: SpringBoot电商项目购物车模块删除购物车的某个商品接口
说明:
(1) 本篇博客主要内容是开发【选中/不选中购物车的某个商品】接口;其实,这儿选中与否,就是更新购物车中该商品的selected字段的值;
(2)一个尚未解决、需要留意的疑惑: 自己并没有在实际中,开发过【电商系统】;所以,有这个疑惑:【购物车中,某个商品是否被勾选】,究竟需不需要在数据库中中增加一个字段来表征;是不是,在有的电商系统中,【购物车中,某个商品是否被勾选】这个活完全交给前端就行了?(PS:这个疑问尚未解决;目前采用本项目的做法即可;)
(3) PS:本篇博客内容,比较简单;
一:【选中/不选中购物车的某个商品】接口说明;
1.【选中/不选中购物车的某个商品】接口文档;
2.【选中/不选中购物车的某个商品】接口,在界面上的表现;
待写,项目上线后,回来补……
二:正式开发;
1.在CartController中,创建选中/不选中购物车的某个商品的方法:select()方法;
说明:
(1) url,请求方式,参数要符合接口要求;
(2) 同样,这儿出于安全考虑,防止横向越权,用户id,我们从程序中获取;
(3) 有关Service层的,选中/不选中购物车的某个商品的逻辑方法,selectOrNot()方法,在下一部分介绍;
2.在CartServiceImpl中,创建选中/不选中购物车的某个商品的逻辑方法:selectOrNot()方法;并在CartService中反向生成方法的声明;
(1)在CartServiceImpl中,创建选中/不选中购物车的某个商品的逻辑方法:selectOrNot()方法;
说明:
(1) 有一句话说得好,优秀的程序员之所以优秀,不仅因为其可以编写正确的逻辑,更多是其能够考虑到所有意外的情况;所以,这儿,我们就考虑到了意外的情况,并做了处理;
(2) 如果在数据中有对应的数据,那么我们就去更改选中状态;(其实就是更新selected字段);selectOrNot()方法,在下一部分介绍;
(3)一个需要特别说明的点:
● 其实但就这一个业务来说,Dao层的方法,可以这些写:
● 那么,至于为什么没有这样写,是因为:【选中/不选中购物车的某个商品接口】和【全选/全不选购物车的某个商品接口】,差不多,我们想在这两个接口中,复用一点东西,以节省点工作量;
● 自然,为此,这儿有很多种可行的策略;
● 只是,这儿我们采取的策略是:(【全选/全不选购物车的某个商品】接口在下一篇博客介绍)
● 所以,这儿我们的Dao层的方法,没有写成【selectOrNot(cart.getId(),selected);】这种传cartId的形式;而是写成了【selectOrNot(userId, productId, selected);】这种传userId和productId的形式;
● 还是那句话,为了解决同一个业务,会有很多可行的策略;我们需要做的就是,在自己能力范围内,尽量选择一个明确的、更好的策略;
(2)在CartService中反向生成方法的声明;
3.在CartMapper中定义【根据userId、ProductId、selected,更新购物车中某个商品的selected字段】的方法,selectOrNot()方法;并在CartMapper.xml中,编写实现SQL;
(1)在CartMapper中定义【根据userId、ProductId、selected,更新购物车中某个商品的selected字段】的方法,selectOrNot()方法;
(2)在CartMapper.xml中,编写实现SQL;
说明:
(1) 这儿的内容,见过N次了,没什么好说的;还是那句话,建议使用(“自认为”)标准的、更完美的方案;(可以参考【附加Mybatis传递多个参数时的处理策略】)
三:测试;
启动项目;