购物车删除

本文介绍了一种基于Java的购物车删除功能实现方案,通过调用API接口完成购物车商品的删除操作,并详细展示了实现该功能所需的代码结构,包括模型层、视图层和控制器层之间的交互。

String DELETECART_URL = "https://www.zhaoapi.cn/product/deleteCart";

model

package com.example.a1512qjd.model.inter;

import com.example.a1512qjd.net.OnNetListener;

public interface DeleteCartModel {
    void deleteCart(String uid, String pid, String token, OnNetListener onNetListener);
}
package com.example.a1512qjd.model;

import com.example.a1512qjd.model.inter.DeleteCartModel;
import com.example.a1512qjd.net.Api;
import com.example.a1512qjd.net.OkhttpUtils;
import com.example.a1512qjd.net.OnNetListener;

import java.util.HashMap;
import java.util.Map;

public class DeleteCartModelImp implements DeleteCartModel {
    @Override
    public void deleteCart(String uid, String pid, String token, final OnNetListener onNetListener) {
        Map<String,String> params = new HashMap<>();
        params.put("uid",uid);
        params.put("pid",pid);
        params.put("token",token);
        OkhttpUtils.getInstance().doPost(Api.DELETECART_URL, params, new OnNetListener() {
            @Override
            public void onSuccess(String result) {
                onNetListener.onSuccess(result);
            }

            @Override
            public void onFailed(Exception e) {
                onNetListener.onFailed(e);
            }
        });
    }
}
package com.example.a1512qjd.presenter.inter;

public interface DeleteCartPresenter {
    void deleteCart(String uid, String pid, String token);
}

package com.example.a1512qjd.presenter;

import com.example.a1512qjd.model.DeleteCartModelImp;
import com.example.a1512qjd.net.OnNetListener;
import com.example.a1512qjd.presenter.inter.DeleteCartPresenter;
import com.example.a1512qjd.ui.inter.DeleteCartView;

public class DeleteCartPresenterImp implements DeleteCartPresenter {

    private final DeleteCartModelImp deleteCartModelImp;
    private DeleteCartView deleteCartView;

    public DeleteCartPresenterImp(DeleteCartView deleteCartView) {
        this.deleteCartView = deleteCartView;
        deleteCartModelImp = new DeleteCartModelImp();
    }

    @Override
    public void deleteCart(String uid, String pid, String token) {
        deleteCartModelImp.deleteCart(uid, pid, token, new OnNetListener() {
            @Override
            public void onSuccess(String result) {
                deleteCartView.delSuccess();
            }

            @Override
            public void onFailed(Exception e) {

            }
        });

    }
}
package com.example.a1512qjd.ui.inter;

public interface DeleteCartView {
    void delSuccess();
}

deleteCartPresenterImp = new DeleteCartPresenterImp(this);
childViewHolder.tvDel = convertView.findViewById(R.id.tvDel);
//给删除设置点击事件
childViewHolder.tvDel.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        progressDialog.show();
        state = GETCARTS;
        //获取pid
        int pid = listBean.getPid();
        //删除购物车里的选项
        deleteCartPresenterImp.deleteCart(uid, pid + "", token);

    }
});
//删除成功回调接口
@Override
public void delSuccess() {
    getCartsPresenterImp.getCarts(uid, token);
}


实现购物车删除数量功能需要以下步骤: 1. 在购物车页面中,为每个商品添加删除按钮,并为该按钮绑定一个事件处理程序。 2. 在事件处理程序中,获取该商品的数量和单价,计算出该商品的总价,并从购物车总价中减去该商品的总价。 3. 如果该商品数量为1,则直接从购物车删除该商品;否则,将该商品数量减1,并更新购物车中该商品的数量和总价。 4. 在后端,更新购物车的数据,并将更新后的购物车数据保存到 session 中。 下面是一个简单的删除数量功能的示例代码: 前端页面: ```html <table> <tr> <td>商品名称</td> <td>单价</td> <td>数量</td> <td>总价</td> <td>操作</td> </tr> <tr> <td>商品1</td> <td>10.00</td> <td> <button onclick="deleteQty(1)">-</button> <span id="qty-1">1</span> <button onclick="addQty(1)">+</button> </td> <td id="total-1">10.00</td> <td><button onclick="deleteItem(1)">删除</button></td> </tr> <tr> <td>商品2</td> <td>20.00</td> <td> <button onclick="deleteQty(2)">-</button> <span id="qty-2">1</span> <button onclick="addQty(2)">+</button> </td> <td id="total-2">20.00</td> <td><button onclick="deleteItem(2)">删除</button></td> </tr> </table> ``` JavaScript代码: ```javascript function deleteQty(itemId) { var qty = parseInt(document.getElementById('qty-' + itemId).innerText); if (qty > 1) { qty--; document.getElementById('qty-' + itemId).innerText = qty; var price = parseFloat(document.getElementById('price-' + itemId).innerText); var total = qty * price; document.getElementById('total-' + itemId).innerText = total.toFixed(2); var cartTotal = parseFloat(document.getElementById('cart-total').innerText); cartTotal -= price; document.getElementById('cart-total').innerText = cartTotal.toFixed(2); } } function addQty(itemId) { var qty = parseInt(document.getElementById('qty-' + itemId).innerText); qty++; document.getElementById('qty-' + itemId).innerText = qty; var price = parseFloat(document.getElementById('price-' + itemId).innerText); var total = qty * price; document.getElementById('total-' + itemId).innerText = total.toFixed(2); var cartTotal = parseFloat(document.getElementById('cart-total').innerText); cartTotal += price; document.getElementById('cart-total').innerText = cartTotal.toFixed(2); } function deleteItem(itemId) { var price = parseFloat(document.getElementById('price-' + itemId).innerText); var qty = parseInt(document.getElementById('qty-' + itemId).innerText); var total = parseFloat(document.getElementById('total-' + itemId).innerText); var cartTotal = parseFloat(document.getElementById('cart-total').innerText); cartTotal -= total; document.getElementById('cart-total').innerText = cartTotal.toFixed(2); var tr = document.getElementById('item-' + itemId); tr.parentNode.removeChild(tr); // 发送 AJAX 请求,将该商品从购物车删除 } // 页面加载时,从 session 中加载购物车数据 window.onload = function() { // 发送 AJAX 请求,获取购物车数据 // ... // 将数据填充到页面中 // ... } ``` 后端Java代码: ```java // 获取购物车数据 Cart cart = (Cart)session.getAttribute("cart"); // 更新购物车数据 cart.removeItem(itemId); // 从购物车删除该商品 session.setAttribute("cart", cart); // 保存更新后的购物车数据到 session 中 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值