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

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

增加商品数量



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–增加购物车商品数量

相关文章
|
7月前
|
JavaScript
基础购物车
基础购物车
42 1
|
7月前
|
存储 数据采集 搜索推荐
商品比价系统实现
商品比价系统实现
441 4
|
SQL 存储 前端开发
显示购物车列表【项目 商城】
显示购物车列表【项目 商城】
141 0
|
SQL 前端开发
显示商品详情【项目 商城】
显示商品详情【项目 商城】
98 0
|
XML JSON 缓存
Java实现根据商品ID请求西域商城商品详情数据方法
Java实现根据商品ID请求西域商城商品详情数据方法
|
XML JSON 缓存
Java实现商品ID获取京东商品历史价格数据方法
Java实现商品ID获取京东商品历史价格数据方法
|
XML JSON 缓存
Java实现商品ID获取淘宝商品历史价格信息数据方法
Java实现商品ID获取淘宝商品历史价格信息数据方法
|
存储 前端开发 Java
【瑞吉外卖】day09:用户地址簿功能、菜品展示、购物车、下单(三)
【瑞吉外卖】day09:用户地址簿功能、菜品展示、购物车、下单
639 0
【瑞吉外卖】day09:用户地址簿功能、菜品展示、购物车、下单(三)
购物车增减商品数量2-修改商品小计35
购物车增减商品数量2-修改商品小计35
104 0
购物车增减商品数量2-修改商品小计35
购物车增减商品数量2-修改商品小计3-35
购物车增减商品数量2-修改商品小计3-35
100 0
购物车增减商品数量2-修改商品小计3-35