19、【购物车模块】——加入购物车功能开发

简介: 购物车功能的开发是用户在前端将商品加入到购物车中的操作,加入的时候分两种情况,一种是商品已经在购物车里面了,如果用户再添加,我们只要增加对应的数量即可;第二种是原来购物车不存在该商品,我们要将该商品添加到购物车中。

购物车功能的开发是用户在前端将商品加入到购物车中的操作,加入的时候分两种情况,一种是商品已经在购物车里面了,如果用户再添加,我们只要增加对应的数量即可;第二种是原来购物车不存在该商品,我们要将该商品添加到购物车中。

1、接口编写:

新建CartController类:

img_a3bc448fab2c3b90fed8f6dcc6c31e64.png
image.png

*Controller:

//    添加商品到购物车
    @RequestMapping("add.do")
    @ResponseBody
    public ServerResponse<CartVo> add(HttpSession session, Integer productId, Integer count){
        User user =(User) session.getAttribute(Const.CURRENT_USER);

        if(user == null){
            return ServerResponse.createByErrorCodeMessage(ResponseCode.NEED_LOGIN.getCode(),ResponseCode.NEED_LOGIN.getDesc());
        }
        return iCartService.add(user.getId(),productId,count);
    }

*Service:

    //添加商品到购物车
    ServerResponse<CartVo> add(Integer userId, Integer productId, Integer count);

*ServiceImpl:

 //添加商品到购物车
    public ServerResponse<CartVo> add(Integer userId, Integer productId, Integer count) {

        if (productId == null || count == null) {
            return ServerResponse.createByErrorCodeMessage(ResponseCode.ILLEGAL_ARGUMENT.getCode(), ResponseCode.ILLEGAL_ARGUMENT.getDesc());
        }
        Cart cart = cartMapper.selectCatByUserIdProductId(userId, productId);

        if (cart == null) {
            //产品不再购物车里,需要新增购物车记录
            Cart cartItem = new Cart();
            cartItem.setQuantity(count);
            cartItem.setChecked(Const.Cart.CHECKED);
            cartItem.setProductId(productId);
            cartItem.setUserId(userId);
            cartMapper.insert(cartItem);
        } else {
            //产品已经在购物车
            //如果产品已存在购物车,则数量相加
            count = cart.getQuantity() + count;
            cart.setQuantity(count);
            cartMapper.updateByPrimaryKeySelective(cart);
        }
        return this.list(userId);
    }

selectCatByUserIdProductId:
*Mapper:

    //根据用户Id和产品Id去查购物车
    Cart selectCatByUserIdProductId(@Param("userId") Integer userId, @Param("productId") Integer productId);

*Mappler.xml:

<!--根据用户Id和产品Id来查询购物车-->
  <select id="selectCatByUserIdProductId" resultMap="BaseResultMap" parameterType="map">
    select
    <include refid="Base_Column_List"/>
    from mmall_cart
    where user_id=#{userId}
    and product_id=#{productId}
  </select>

2、接口测试:

1、添加商品到购物车接口测试
img_263996e8fcfe90bc724b919ddb09c5b7.png
image.png
相关文章
|
关系型数据库 C++ 容器
Qt开发技术:QCharts(一)QCharts基本介绍以及图表框架详解
Qt开发技术:QCharts(一)QCharts基本介绍以及图表框架详解
Qt开发技术:QCharts(一)QCharts基本介绍以及图表框架详解
|
Cloud Native Linux 网络虚拟化
深入理解Linux veth虚拟网络设备:原理、应用与在容器化架构中的重要性
在Linux网络虚拟化领域,虚拟以太网设备(veth)扮演着至关重要的角色🌐。veth是一种特殊类型的网络设备,它在Linux内核中以成对的形式存在,允许两个网络命名空间之间的通信🔗。这篇文章将从多个维度深入分析veth的概念、作用、重要性,以及在容器和云原生环境中的应用📚。
深入理解Linux veth虚拟网络设备:原理、应用与在容器化架构中的重要性
|
监控 Java Nacos
微服务轮子项目(02) - 框架技术选型
微服务轮子项目(02) - 框架技术选型
224 0
|
8月前
|
监控 安全 网络协议
计算机端口:网络通信的桥梁
计算机端口是网络通信的逻辑通道,支持数据传输和服务识别。本文介绍端口定义、分类(知名、注册、动态端口)、作用及管理方法,涵盖常用知名端口如HTTP(80)、HTTPS(443)等,并强调端口安全配置的重要性,帮助读者全面理解这一关键组件。
416 6
|
10月前
|
存储 安全 搜索推荐
理解Session和Cookie:Java Web开发中的用户状态管理
理解Session和Cookie:Java Web开发中的用户状态管理
203 4
|
Java Maven
无法解析符号 ‘SpringBootApplication’
无法解析符号 ‘SpringBootApplication’
658 1
|
11月前
|
存储 SQL 分布式计算
大数据-142 - ClickHouse 集群 副本和分片 Distributed 附带案例演示
大数据-142 - ClickHouse 集群 副本和分片 Distributed 附带案例演示
926 0
|
11月前
|
Java 数据库 Spring
java读取配置文件数据
java读取配置文件数据
363 0
|
关系型数据库 MySQL Windows
mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法
本文讲解:mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法
|
JavaScript
TypeScript——不能将类型“HTMLElement | null”分配给类型“HTMLElement”
TypeScript——不能将类型“HTMLElement | null”分配给类型“HTMLElement”
180 4