增加购物车商品数量【项目 商城】

简介: 增加购物车商品数量【项目 商城】

增加商品数量



1 持久层

1.1 规划需要执行的SQL语句

1.执行更新t_cart表中记录的num值,无需重复开发。

update t_cart set num=?,modified_user=?,modified_time=? where cid=?

2.根据cid的值查询当前的购物车这条数据是否存在。

select * form t_cart where cid=?

1.2 设计接口与抽象方法

    Cart findByCid(Integer cid);

1.3 配置SQL映射

  <select id="findByCid" resultMap="CartEntityMap">
        SELECT * FROM t_cart WHERE cid=#{cid}
    </select>

CartMapper–findByCid


测试

编写一个单元测试方法。

  @Test
    public void findByCid(){
        System.out.println(cartMapper.findByCid(1));
    }

CartMapperTests–findByCid


2 业务层

2.1 规划异常

1.在更新时会产生更新异常。

2.查询的数据是否有访问的权限。

3.要查询的数据不存在,抛出CartNotFoundException

CartNotFoundException


2.2 设计接口与抽象方法

  /**
     * 更新用户的购物车数据的数量
     * @param cid 购物车id
     * @param uid 用户id
     * @param username 用户名(修改者)
     * @return 增加成功后的新数量
     */
    Integer addNum(Integer cid,Integer uid,String username);

2.3 实现抽象方法

    @Override
    public Integer addNum(Integer cid, Integer uid, String username) {
        Cart result = cartMapper.findByCid(cid);
        if (result==null){
            throw new CartNotFoundException("数据不存在");
        }
        if (!result.getUid().equals(uid)){
            throw new AccessDeniedException("数据非法访问");
        }
        Integer num=result.getNum()+1;
        Integer rows = cartMapper.updateNumByCid(cid, num, username, new Date());
        if (rows!=1){
            throw new UpdateException("更新数据失败");
        }
        //返回新的购物车数据据总量
        return num;
    }

CartServiceImpl–addNum


测试

3 控制层

3.1 处理异常

    else if (e instanceof CartNotFoundException) {
            result.setState(4007);
            result.setMessage("购物车数据不存在的异常");
        }

BaseController–CartNotFoundException


3.2设计请求

/carts/{cid}/num/add
Integer cid,HttpSession session
POST
JsonRest<Integer>

3.3 处理请求

 @RequestMapping("/{cid}/num/add")
    public JsonResult<Integer> addNum(@PathVariable("cid") Integer cid, HttpSession session) {
        Integer data = cartService.addNum(cid, getuidFromSession(session), getUsernameFromSession(session));
        return new JsonResult<>(OK,data);
    }

测试

http://localhost:8080/carts/4/num/add


4 前端页面

cart.html

      //addNum
      function addNum(cid) {
        $.ajax({
          url: "/carts/" + cid + "/num/add",
          type: "POST",
          dataType: "JSON",
          success: function(json) {
            if (json.state == 200) {
              // showCartList();
              $("#num-" + cid).val(json.data);
              //获取某个标签内部的内容:文本、标签
              let price = $("#price-" + cid).html();
              let totalPrice = price * json.data;
              $("#total-price-" + cid).html(totalPrice);
            } else {
              alert("增加商品数量失败!" + json.message);
            }
          },
          error: function(xhr) {
            alert("您的登录信息已经过期,请重新登录!HTTP响应码:" + xhr.status);
            location.href = "login.html";
          }
        });
      }
      //addNum

cart.html–addNum


测试



减少商品数量

cart–reduceNum


README–增加购物车商品数量

相关文章
|
JavaScript 前端开发
分享24个JS特效广告和66个JS特效在线客服J代码JS代码
分享24个JS特效广告和66个JS特效在线客服J代码JS代码
400 1
|
SQL 缓存 NoSQL
如何选择合适的CPU进行维修?
【10月更文挑战第31天】如何选择合适的CPU进行维修?
336 3
|
移动开发 小程序 PHP
分享88个新闻文章PHP源码,总有一款适合你
分享88个新闻文章PHP源码,总有一款适合你
563 1
|
存储 分布式计算 Hadoop
快速搭建HDFS集群
快速搭建HDFS集群
571 0
快速搭建HDFS集群
|
Java
Java中BigDecimal 类的创建对象方法,介绍,常用方法以及8种舍入模式
Java中BigDecimal 类的创建对象方法,介绍,常用方法以及8种舍入模式
1181 0
Java中BigDecimal 类的创建对象方法,介绍,常用方法以及8种舍入模式
|
Java 程序员 编译器
计算机编程语言学习要点
计算机编程语言学习要点
570 0
什么是UTC时间,为什么系统时间会不准?
一、什么是UTC时间     世界协调时间(Universal Time Coordinated,UTC),GPS 系统中有两种时间区分,一为UTC,另一为LT(地方时)两者的区别为时区不同,UTC就是0时区的时间,地方时为本地时间,如北京为早上八点(东八区),UTC时间就为零点,时间比北京时晚八小时,以此计算即可. UTC相当于本初子午线(即经度0度)上的平均太阳时,过去曾用格林威治平均时(GMT)来表示.北京时间比UTC时间早8小时,以1999年1月1日0000UTC为例,UTC时间是零点,北京时间为1999年1月1日早上8点整。
7338 0
|
5天前
|
缓存 测试技术 API
Qwen 3.7 Plus 与 Max 实测:性价比与多模态能力差异解析(2026)
2026 年 6 月 1 日,阿里悄无声息地发布了 Qwen 3.7 Plus,距 Qwen 3.7 Max 上线刚好 11 天。同样的 1M 上下文,同样的 35 小时自治上限。但价格才是头条:Plus 是 0.40/M输入,Max是 2.50/M——便宜约 6 倍——并且还能看图、看视频。Vision Arena 上 Plus 已经排到 #16。所以这周真正值得讨论的问题不是”要不要为视觉能力买单”,而是”Max 凭什么用 6 倍价格换来 2 个百分点的 benchmark 领先”。
|
6天前
|
JavaScript 定位技术 API
CodeGraph 爆火:编程 Agent 需要的不是更多上下文,而是一张提前画好的代码地图
CodeGraph 是一款爆火的本地代码智能工具,通过 tree-sitter 解析 AST 构建结构化知识图谱(存于 SQLite),为编程 Agent 提前生成“代码地图”。它显著降低 Agent 在中大型项目中的探索成本——实测工具调用减少71%、Token 降57%、速度提升46%,支持19+语言及主流框架路由识别,完全离线、无需 API Key。
679 5
CodeGraph 爆火:编程 Agent 需要的不是更多上下文,而是一张提前画好的代码地图