首页 > 其他分享 >day10-功能实现09

day10-功能实现09

时间:2022-12-27 21:12:52浏览次数:59  
标签:功能 09 家居 resp req cart 购物车 day10 id

家居网购项目实现09

以下皆为部分代码,详见 https://github.com/liyuelian/furniture_mall.git

21.功能20-修改购物车

21.1需求分析/图解

image-20221226211829037
  1. 进入购物车页面,可以修改购买数量
  2. 更新该商品的金额
  3. 更新购物车商品数量和总金额

21.2思路分析

21.3代码实现

21.3.1entity层

Cart.java

增加方法updateCount()

/**
 * 根据家居id和count,修改指定cartItem的数量和总价
 *
 * @param id    家居id
 * @param count 指定id的家居的数量
 */
public void updateCount(int id, int count) {
    //获取指定的cartItem
    CartItem item = items.get(id);
    if (null != item) {//如果cartItem不为空
        //更新数量
        item.setCount(count);
        //某家居总价 = 单价 * 数量(为了安全使用get方法获取数量count)
        item.setTotalPrice(item.getPrice().multiply(new BigDecimal(item.getCount())));
    }
}

21.3.2web层

CartServlet.java

增加方法updateCount()

/**
 * 更新购物车的某个家居数量
 *
 * @param req
 * @param resp
 * @throws ServletException
 * @throws IOException
 */
protected void updateCount(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    int id = DataUtils.parseInt(req.getParameter("id"), 0);
    int count = DataUtils.parseInt(req.getParameter("count"), 1);
    //获取session中的购物车
    Cart cart = (Cart) req.getSession().getAttribute("cart");
    if (null != cart) {
        cart.updateCount(id, count);
    }
    //回到请求更新家居购物车的页面
    resp.sendRedirect(req.getHeader("Referer"));
}

21.3.3前端

cart.jsp

添加绑定事件,当点击修改对应的家居数量时,向服务器发送更新家居信息的请求

<script type="text/javascript">
    $(function () {
        /*--------------------------
            Cart Plus Minus Button
        ----------------------------*/
        var CartPlusMinus = $(".cart-plus-minus");
        CartPlusMinus.prepend('<div class="dec qtybutton">-</div>');
        CartPlusMinus.append('<div class="inc qtybutton">+</div>');
        $(".qtybutton").on("click", function () {
            var $button = $(this);
            var oldValue = $button.parent().find("input").val();
            if ($button.text() === "+") {
                var newVal = parseFloat(oldValue) + 1;
            } else {
                // Don't allow decrementing below zero
                if (oldValue > 1) {
                    var newVal = parseFloat(oldValue) - 1;
                } else {
                    newVal = 1;
                }
            }
            $button.parent().find("input").val(newVal);
            var furnId = $button.parent().find("input").attr("furnId");
            //发出修改购物车的请求
            location.href =
                "cartServlet?action=updateCount&count=" + newVal + "&id=" + furnId;
        });
    })
</script>

21.4完成测试

image-20221227180751201

修改家居数量:

image-20221227180837612

22.功能21-删除/清空购物车

22.1需求分析/图解

image-20221227185033474
  1. 进入购物车,可以删除某商品
  2. 可以清空购物车
  3. 要求该出适当的确认信息

22.2思路分析

见21.2思路分析图

22.3代码实现

22.3.1entity层

Cart.java添加删除购物车家居项的方法delItem()

/**
 * 根据家居id删除对应的cartItem
 *
 * @param id 家居id
 */
public void delItem(int id) {
    items.remove(id);
}

增加清空方法clear()

/**
 * 清空items
 */
public void clear() {
    items.clear();
}

22.3.2web层

CartServlet.java添加方法delItem()

/**
 * 根据id删除购物车的某个家居信息
 *
 * @param req
 * @param resp
 * @throws ServletException
 * @throws IOException
 */
protected void delItem(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    int id = DataUtils.parseInt(req.getParameter("id"), 0);
    //获取session中的购物车
    Cart cart = (Cart) req.getSession().getAttribute("cart");
    if (null != cart) {
        cart.delItem(id);
    }
    //回到请求删除家居项的购物车页面
    resp.sendRedirect(req.getHeader("Referer"));
}

增加clear()方法

/**
 * 清空购物车
 *
 * @param req
 * @param resp
 * @throws ServletException
 * @throws IOException
 */
protected void clear(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    //获取session的购物车
    Cart cart = (Cart) req.getSession().getAttribute("cart");
    if (null != cart) {
        cart.clear();
    }
    //回到请求清空家居项的购物车页面
    resp.sendRedirect(req.getHeader("Referer"));
}

22.3.3前端

cart.jsp

//清空购物车绑定确认事件
$("a.clearCart").click(function () {
    return window.confirm("你确认要清空购物车吗?")
})

//给删除购物车绑定事件
$("a.delItem").click(function () {
    //获取要删除的家居名
    var furnName = $(this).parent().parent().find("td:eq(1)").text();
    //使用确认弹窗
    //点击确认,返回true,点击取消,返回false
    return window.confirm("你确认要删除" + furnName + "吗?")
})
image-20221227192117207 image-20221227194032831

22.4完成测试

删除购物车项:

image-20221227192245013 image-20221227192257075

清空购物车:

image-20221227194405872 image-20221227194415362

23.功能22-生成订单

23.1需求分析/图解

image-20221227195655878 image-20221227204858133 image-20221227201044836 image-20221227201115765
  1. 进入购物车,点击购物车结账
  2. 生成订单和订单项
  3. 如果会员没有登录,则先进入登录页面,完成登录后再结账

23.2思路分析

23.3代码实现

23.3.1设计order和order_item表

23.4完成测试

标签:功能,09,家居,resp,req,cart,购物车,day10,id
From: https://www.cnblogs.com/liyuelian/p/17009003.html

相关文章

  • 删除选中功能
    删除选中分析:    获取选中条目id的代码实现:list.jsp:使用form标签将整个table包起来给删除选中按钮绑定单击事件<%@pagecontentType="text/html;c......
  • 在TableViewer中如何给表格的单元格增加其他组件的编辑功能
    我想实现在JFace/SWT下的TableViewer中的单元格中能添加一些组件比如Button,Text,Label的功能,我查了一下,JFace本身已经实现了ComboBoxCellEditor,TextCellEditor,CheckboxCellE......
  • iOS中登錄功能的體驗探究
    登錄功能是我在​​湖畔​​做的第一個需求。 當時PD给我的草圖和下圖類似:(圖片來自知乎iOS客戶端登錄界面) 不過需求中要求用戶名或者密碼錯誤時,輸入框要抖動(類似Mac登錄密......
  • MTK平台如何做上电开机功能?
    需求:      一些行业需求,用MTK平台需要上电即立马开机功能!解决方案:      平台本身开机是通过长按PowerKey3S才能正常开机,有些平台可以通过配置PMIC的寄存......
  • 删除功能和修改功能
    删除功能分析:list.jsp: <%@pagecontentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/cor......
  • 【WPF】自定义一个自删除的多功能ListBox
    原文地址https://www.cnblogs.com/younShieh/p/17008534.html❤如果本文对你有所帮助,不妨点个关注和推荐呀,这是对笔者最大的支持~❤我需要一个ListBox,他在界面上分为几......
  • 短说通用版3.8.1正式版发布|积分清零、排行榜、全新表情包等功能
    Hi大家好,我是给你们带来惊喜的运营小番茄。本期会大家汇报一下短说最新进程:短说通用版3.8.1正式版,是上次发文3.8.0测试版的正式版。本次3.8版本更新大量功能,主要围绕大家心......
  • 【Mybatis技术专题】MybatisPlus自带强大功能之多租户插件实现原理和实战分析(3)
    ​​http://mp.baomidou.com/guide/tenant.html​​前提介绍一般的程序应用当使用者访问不同,并且进入相对应的程序页面,则会把用户相关数据传输到后台这里。在传输的时候需要......
  • Microsoft 365 新功能速递:Teams中支持删除Chat History
    Blog链接:​​​https://blog.51cto.com/u_13637423​​随着我们使用MicrosoftTeams的日积月累,可以说许多人的ChatHistory列表已经变得杂乱无章,并且随着时间的推移而不断增......
  • MYSQL的常用实用功能
    (1)showcreatetable比如>>desc'order' 能够看到order表中的字段名称、字段类型、字段长度、是否允许为空,是否主键、默认值等信息。不能看到该表的索引信息查看字段和索......