显示购物车列表【项目 商城】

简介: 显示购物车列表【项目 商城】

显示购物车列表


1 持久层

1.1 规划SQL语句

# 多表查询如果字段名重复则需要显示声明该字段属于那张表
SELECT cid,uid,pid,
    t_cart.price,t_cart.num 
    t_product_title,t_product.image,
    t_product.price AS realprice
FROM t_cart LEFT JOIN t_product on t_cart.pid=t_product.id
WHERE uid=#{uid} 
ORDER t_cart.created_time DESC

VO:Value Object,值对象。当进行SELECT查询时,查询的结果属于多张表中的内容,此时发现结果集不能使用某个POJI实体类来接受,POJO实体类不能包含多表查询出来的结果。解决方式是:重新构建一个新的对象用于存储所查询出来的结构集对应的映射,所以把这样的对象称之为值对象

/**表示购物车数据的VO类(Value Object)*/
public class CartVO implements Serializable {
    private Integer cid;
    private Integer uid;
    private Integer pid;
    private Long price;
    private Integer num;
    private String title;
    private Long realPrice;
    private String image;
  //....
}

CartVO


1.2 实现接口与抽象方法

抽象方法设计

        List<CartVO> findVOByUid(Integer uid);

1.3 配置SQL映射

     SELECT cid, uid, pid, t_cart.price, t_cart.num, t_product.title, t_product.price AS realPrice, t_product.image
        FROM t_cart LEFT JOIN t_product ON t_cart.pid = t_product.id
        WHERE uid = #{uid} ORDER BY t_cart.created_time DESC

CartMapper–findVOByUid


测试

单元测试。

     @Test
    public void findVOByUid(){
        List<CartVO> list = cartMapper.findVOByUid(8);
        for (CartVO cartVO:
             list) {
            System.out.println(cartVO) ;
        }
    }

CartMapperTests–findVOByUid


2 业务层

2.1 规划异常

2.2 编写接口与抽象方法

1.先编写业务层的接口方法。

    List<CartVO> getVOByUid(Integer uid);

CartServiceImpl–getVOByUid


测试

3 控制器

3.1 处理异常

3.2 设计请求

1.设计请求。

/carts
session
GET
JsonResult<List<CartVO>>

3.3 处理请求

2.实现请求处理方法的代码

   @RequestMapping({"","/"})
    public JsonResult<List<CartVO>> getVOByUid(HttpSession session) {
        List<CartVO> data = cartService.getVOByUid(getuidFromSession(session));
        return new JsonResult<>(OK,data);
    }

CartController–getVOByUid


测试

3.先登录在进行功能测试

http://localhost:8080/carts


4 前端页面

cart.html

1.注释掉cart.js文件

2.form表单结果。action=“orderConfirm.html”、tbody标签的额id="cart-list"属性、"结算按钮"改成type="button"属性值

3.ready()函数来完成自动的ajax请求的条件和处理。

//showCartList
      $(document).ready(function() {
        showCartList();
      });
      function showCartList() {
        $("#cart-list").empty();
        $.ajax({
          url: "/carts",
          type: "GET",
          dataType: "JSON",
          success: function(json) {
            let list = json.data;
            for (let i = 0; i < list.length; i++) {
              let tr = '<tr>'
                  + '<td>'
                  +   '<input name="cids" value="#{cid}" type="checkbox" class="ckitem" />'
                  + '</td>'
                  + '<td><img src="..#{image}collect.png" class="img-responsive" /></td>'
                  + '<td>#{title}#{msg}</td>'
                  + '<td>¥<span id="price-#{cid}">#{realPrice}</span></td>'
                  + '<td>'
                  +   '<input type="button" value="-" class="num-btn" οnclick="reduceNum(#{cid})" />'
                  +   '<input id="num-#{cid}" type="text" size="2" readonly="readonly" class="num-text" value="#{num}">'
                  +   '<input class="num-btn" type="button" value="+" οnclick="addNum(#{cid})" />'
                  + '</td>'
                  + '<td>¥<span id="total-price-#{cid}">#{totalPrice}</span></td>'
                  + '<td>'
                  +   '<input type="button" οnclick="delCartItem(this)" class="cart-del btn btn-default btn-xs" value="删除" />'
                  + '</td>'
                  + '</tr>';
              tr = tr.replace(/#{cid}/g, list[i].cid);
              tr = tr.replace(/#{title}/g, list[i].title);
              tr = tr.replace(/#{image}/g, list[i].image);
              tr = tr.replace(/#{realPrice}/g, list[i].realPrice);
              tr = tr.replace(/#{num}/g, list[i].num);
              tr = tr.replace(/#{totalPrice}/g, list[i].realPrice * list[i].num);
              if (list[i].realPrice < list[i].price) {
                tr = tr.replace(/#{msg}/g, "比加入时降价" + (list[i].price - list[i].realPrice) + "元");
              } else {
                tr = tr.replace(/#{msg}/g, "");
              }
              $("#cart-list").append(tr);
            }
          },
          error: function (xhr){
            alert("购物车列表数据加载是产生未知的异常,"+xhr.status)
          }
        });
      }
      //showCartList

cart.html–showCartList


测试


READ–显示购物车列表

相关文章
|
7月前
|
前端开发 JavaScript
|
JSON API 开发者
淘宝获取购物车的商品列表 API接口
淘宝提供了获取购物车商品列表 API 接口,允许开发者通过编程方式获取用户购物车中的商品列表。这个 API 接口可以帮助开发者更好地了解用户在购物车中添加了哪些商品,以及每个商品的基本信息,例如商品 ID、名称、价格、数量等。
|
4月前
|
前端开发 数据库
SpringBoot+Vue实现商品不能重复加入购物车、购物车中展示商品的信息、删除商品重点提示等操作。如何点击图片实现图片放大
这篇文章介绍了如何在SpringBoot+Vue框架下实现购物车功能,包括防止商品重复加入、展示商品信息、删除商品时的提示,以及点击图片放大的前端实现。
SpringBoot+Vue实现商品不能重复加入购物车、购物车中展示商品的信息、删除商品重点提示等操作。如何点击图片实现图片放大
|
开发者
【 uniapp - 黑马优购 | 购物车页面(1)】如何创建购物车编译模式、 商品列表区域实现
【 uniapp - 黑马优购 | 购物车页面(1)】如何创建购物车编译模式、 商品列表区域实现
283 0
|
7月前
购物车的功能——界面源码
购物车的功能——界面源码
|
SQL 前端开发 测试技术
显示勾选的购物车数据【项目 商城】
显示勾选的购物车数据【项目 商城】
79 0
|
SQL 前端开发
显示商品详情【项目 商城】
显示商品详情【项目 商城】
98 0
|
SQL XML 前端开发
收货地址列表展示【项目 商城】
收货地址列表展示【项目 商城】
112 0
|
SQL 前端开发 测试技术
增加购物车商品数量【项目 商城】
增加购物车商品数量【项目 商城】
107 0
|
前端开发 JavaScript 数据库
获取省市区列表【项目 商城】
获取省市区列表【项目 商城】
286 0