up:: SpringBoot电商项目购物车模块选中不选中购物车的某个商品接口

说明:

(1) 本篇博客主要内容是开发【全选/全不选购物车的商品】接口;其实,这儿选中与否,就是更新购物车中该商品的selected字段的值;

(2) 本篇博客内容,比较简单;只是,复用了开发【选中/不选中购物车的某个商品】接口时的Dao层;


一:【全选/全不选购物车的商品】接口说明;

1.【全选/全不选购物车的商品】接口文档;

2.【全选/全不选购物车的商品】接口,在界面上的表现;

待写,项目上线后,回来补……


二:正式开发;

1.在CartController中,创建全选/全不选购物车的商品的方法:selectAll()方法;

 
         /**
          * 购物车模块:全选/全不选购物车的商品
          * @param selected
          * @return
          */
         @ApiOperation("全选/全不选购物车的商品")
         @PostMapping("/selectAll")
         public ApiRestResponse selectAll(@RequestParam("selected") Integer selected) {
             List<CartVO> cartVOList = cartService.selectAllOrNot(UserFilter.currentUser.getId(), selected);
             return ApiRestResponse.success(cartVOList);
         }

说明:

(1) url,请求方式,参数要符合接口要求;

(2) 同样,这儿出于安全考虑,防止横向越权,用户id,我们从程序中获取;

(3) 有关Service层的,全选/全不选购物车的商品的逻辑方法,selectAllOrNot()方法,在下一部分介绍;

2.在CartServiceImpl中,创建全选/全不选购物车的商品的逻辑方法:selectAllOrNot()方法;并在CartService中反向生成方法的声明;

(1)在CartServiceImpl中,创建全选/全不选购物车的商品的逻辑方法:selectAllOrNot()方法;

 
         /**
          * 全选/全不选购物车的商品
          * @param userId
          * @param selected
          * @return
          */
         @Override
         public List<CartVO> selectAllOrNot(Integer userId, Integer selected)
 
          {//直接,更新该用户,在购物车中的,所有商品的selected状态;(因为是全部更新,所以这儿我们完全不需要先查看有没有,直接更新就是了)
             cartMapper.selectOrNot(userId, null, selected);
             return this.list(userId);
         }

说明:

(1) 这儿,我们依旧调用在开发【选中/不选中购物车的某个商品】接口时,在Dao层开发的方selectOrNot()方法;只是,才是productId这个参数我们传的是null;

(2) 为了能够复用这个方法,让其能同时满足【选中/不选中购物车的某个商品】接口、又能满足【全选/全不选购物车的商品】接口;我们处理了其实现SQL;(这在下一部分会介绍)


(2)在CartService中反向生成方法的声明;

3.修改,我们在CartMapper中定义【根据userId、ProductId、selected,更新购物车中某个商品的selected字段】的selectOrNot()方法的,实现SQL;

(1)原先,我们在CartMapper中定义【根据userId、ProductId、selected,更新购物车中某个商品的selected字段】的方法,selectOrNot()方法:不做任何修改;

 
         /**
          * 根据userId、ProductId、selected,更新购物车中符合条件的商品的selected字段
          * @param userId
          * @param productId
          * @param selected
          * @return
          */
         Integer selectOrNot(@Param("userId") Integer userId, @Param("productId") Integer productId,
                             @Param("selected") Integer selected);

(2)在CartMapper.xml中的实现SQL,我们修改如下:

 
       <update id="selectOrNot">
         update imooc_mall_cart
         set selected = #{selected}
         where user_id = #{userId}
         <if test="productId != null">
           and product_id = #{productId}
         </if>
       </update>

说明:

(1) 修改内容说明;


三:测试;

启动项目;