(十三)搭建springboot商城--增加购物车商品数量

1 持久层

1.1 规划需要执行的SQL语句

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

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

select * from t_cart where cid=?

 <select id="findByCid" resultMap="CartEntityMap">
        select * from t_cart where cid=#{cid}
    </select>

1.2 接口和抽象方法 

Cart findByCid(Integer cid);

1.3 配置SQL的映射 

 <select id="findByCid" resultMap="CartEntityMap">
        select * from t_cart where cid=#{cid}
    </select>

编写测试方法 

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

2 业务层 

2.1规划异常

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

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

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

2.2 设计接口和抽象方法

  /**
     * 更新用户的购物车数据的数量
     * @param cid
     * @param num
     * @param username
     * @return 增加成功后新的数量
     */
     Integer addNum(Integer cid,Integer num,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;
    }

3 控制层 

3.1 处理异常

3.2 设计请求

/carts/{cid}/num/add

Integer cid ,httpSession

post

JsonResult<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);

    }

4 前端页面 

}
			function addNum(cid){
				$.ajax(
						{
							url:"/carts/"+cid+"/num/add",
							type:"POST",
							dataType:"JSON",
							success:function (json) {
								if(json.state==200){
									console.log(json.data)
									$("#goodsCount"+cid).val(json.data);
									//获取某个标签内部的内容:文本标签
									let  price=$("#goodsPrice"+cid).html()
									let totalPrice=price*json.data;
									$("#goodsCast"+cid).html(totalPrice);
									location.href="cart.html"
								}else {
									alert("增加购物车数据失败"+json.message)
								}
							},
							error:function (xhr) {
								alert("增加数量产生未知异常"+xhr.status)
							}
						}
				);
			}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值