在购物车中,我们可以删除购物项,修改产品的购买数量,清空购物车,进入结算中心。
以下是购物车的代码:
/**
* 购物车
*/
public class BuyCart {
/* 购物项 */
private List<BuyItem> items = new ArrayList<BuyItem>();
/* 配送信息 */
private OrderDeliverInfo deliverInfo;
/* 购买者联系信息 */
private OrderContactInfo contactInfo;
/* 支付方式 */
private PaymentWay paymentWay;
/* 购买者与收货人是否相同 */
private Boolean buyerIsrecipients;
/* 配送费 */
private float deliveFee = 10f;
/* 附言 */
private String note;
public String getNote() {
return note;
}
public void setNote(String note) {
this.note = note;
}
public float getDeliveFee() {
return deliveFee;
}
public void setDeliveFee(float deliveFee) {
this.deliveFee = deliveFee;
}
public PaymentWay getPaymentWay() {
return paymentWay;
}
public void setPaymentWay(PaymentWay paymentWay) {
this.paymentWay = paymentWay;
}
public Boolean getBuyerIsrecipients() {
return buyerIsrecipients;
}
public void setBuyerIsrecipients(Boolean buyerIsrecipients) {
this.buyerIsrecipients = buyerIsrecipients;
}
public OrderContactInfo getContactInfo() {
return contactInfo;
}
public void setContactInfo(OrderContactInfo contactInfo) {
this.contactInfo = contactInfo;
}
public OrderDeliverInfo getDeliverInfo() {
return deliverInfo;
}
public void setDeliverInfo(OrderDeliverInfo deliverInfo) {
this.deliverInfo = deliverInfo;
}
public List<BuyItem> getItems() {
return items;
}
/**
* 添加购物项
* @param item 购物项
*/
public void add(BuyItem item){
if(this.items.contains(item)){
for(BuyItem it : this.items){
if(it.equals(item)){
it.setAmount(it.getAmount()+1);
break;
}
}
}else{
this.items.add(item);
}
}
/**
* 删除指定购物项
* @param item 购物项
*/
public void delete(BuyItem item){
if(this.items.contains(item)) this.items.remove(item);
}
/**
* 清空购物项
*/
public void deleteAll(){
this.items.clear();
}
/**
* 计算商品总销售价
* @return
*/
public float getTotalSellPrice(){
float totalprice = 0F;
for(BuyItem item : this.items){
totalprice += item.getProduct().getSellprice() * item.getAmount();
}
return totalprice;
}
/**
* 计算商品总市场价
* @return
*/
public float getTotalMarketPrice(){
float totalprice = 0F;
for(BuyItem item : this.items){
totalprice += item.getProduct().getMarketprice() * item.getAmount();
}
return totalprice;
}
/**
* 计算总节省金额
* @return
*/
public float getTotalSavedPrice(){
return this.getTotalMarketPrice() - this.getTotalSellPrice();
}
/**
* 计算订单的总费用
* @return
*/
public float getOrderTotalPrice(){
return this.getTotalSellPrice()+ this.deliveFee;
}
}
以下是购物项的代码:
/**
* 购物项
*/
public class BuyItem {
private ProductInfo product;
private Integer amount = 1;
public BuyItem(){}
public BuyItem(ProductInfo product) {
this.product = product;
}
public ProductInfo getProduct() {
return product;
}
public void setProduct(ProductInfo product) {
this.product = product;
}
public Integer getAmount() {
return amount;
}
public void setAmount(Integer amount) {
this.amount = amount;
}
@Override
public int hashCode() {
String result = product.getId().toString();
if(!product.getStyles().isEmpty()) result +="-"+ product.getStyles().iterator().next().getId();
return result.hashCode();
}
//购物车里的产品,最多只可能存在一个样式
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
final BuyItem other = (BuyItem) obj;
if (product == null) {
if (other.product != null)
return false;
} else if (!product.equals(other.product))
return false;
if(product.getStyles().size()!=other.product.getStyles().size()){
return false;
}
Integer style = product.getStyles().iterator().next().getId();
Integer othersytle = other.product.getStyles().iterator().next().getId();
if(!style.equals(othersytle)) return false;
return true;
}
}
购物车的Controller:
@Controller("/shopping/cart/manage")
public class BuyCartManageAction extends DispatchAction {
/**
* 删除指定购物项
*/
public ActionForward delete(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
BuyCart cart = (BuyCart)WebUtil.getBuyCart(request);
BuyCartForm formbean = (BuyCartForm) form;
if(formbean.getProductid()!=null && formbean.getProductid()>0
&& formbean.getStyleid()!=null && formbean.getStyleid()>0){
ProductInfo product = new ProductInfo(formbean.getProductid());
product.addProductStyle(new ProductStyle(formbean.getStyleid()));
BuyItem item = new BuyItem(product);
cart.delete(item);
}
request.setAttribute("directUrl", "/shopping/cart.do");
return mapping.findForward("directUrl");
}
/**
* 清空购物车
*/
public ActionForward deleteAll(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
BuyCart cart = (BuyCart)WebUtil.getBuyCart(request);
cart.deleteAll();
request.setAttribute("directUrl", "/shopping/cart.do");
return mapping.findForward("directUrl");
}
/**
* 修改购买数量
*/
public ActionForward updateAmount(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
modifyBuyAmount(request);
request.setAttribute("directUrl", "/shopping/cart.do");
return mapping.findForward("directUrl");
}
private void modifyBuyAmount(HttpServletRequest request) {
BuyCart cart = (BuyCart)WebUtil.getBuyCart(request);
for(BuyItem item : cart.getItems()){
StringBuilder sb = new StringBuilder("amount_");
sb.append(item.getProduct().getId()).append("_");
sb.append(item.getProduct().getStyles().iterator().next().getId());
String amount = request.getParameter(sb.toString());
if(amount!=null && !"".equals(amount.trim())){
item.setAmount(new Integer(amount.trim()));
}
}
}
/**
* 结算
*/
public ActionForward settleAccounts(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
modifyBuyAmount(request);
BuyCartForm formbean = (BuyCartForm) form;
String url = "/customer/shopping/deliver.do";
if(formbean.getDirectUrl()!=null && !"".equals(formbean.getDirectUrl())) url = formbean.getDirectUrl();
request.setAttribute("directUrl", url);
return mapping.findForward("directUrl");
}
}
清空购物车的功能就是调用了BuyCartManageAction的deleteAll()方法。删除指定购物项只需调用BuyCartManageAction的delete()方法就行了。
分享到:
相关推荐
### 巴巴运动网商品交易系统详细设计说明书关键知识点解析 #### 一、概述 **巴巴运动网商品交易系统**是一款专为大型企业设计的在线商品交易平台,旨在帮助企业高效管理和运营电子商务活动。该系统不仅提供了商品...
通过对巴巴运动网源码的分析,我们可以学习到实际项目中的最佳实践,提升自己的编程技能和项目管理能力。同时,也能为改进现有网站、开发类似平台或者进行二次开发提供参考和灵感。对于开发者来说,这是一份宝贵的...
巴巴运动网商品交易系统是一套面向大型企业开发的商品交易系统,具备先进的电子商务运营及管理理念。订单流转实现多部门协同处理,满足大型企业多部门协作处理业务的需求。系统包含以下模块: 产品管理:产品具有...
基于分布式构架的大型商品交易平台,系统围绕一个业务中心的思想,实现了多种类型的客户端应用,如:基于浏览器的web交易系统,基于手机的wap交易系统,用于内部办公的OA系统,像这些系统都使用了同一个业务中心。...
【巴巴运动网源码】是一个基于Java开发的分布式系统,其设计和实现充分展示了现代互联网应用的高效能和可扩展性。在当前的数字化时代,此类源码对于开发者来说是一份宝贵的参考资料,可以帮助他们理解大型网站的架构...
根据提供的文件信息,我们可以推断出这是一套关于“新巴巴运动网”项目的视频教程及相关源码资料。接下来,我们将围绕这个项目的背景、教程内容、技术栈等方面进行深入解析。 ### 项目背景 “新巴巴运动网”项目...
巴巴运动网 基于分布式构架的大型商品交易平台,系统围绕一个业务中心的思想,实现了多种类型的客户端应用,如:基于浏览器的web交易系统,基于手机的wap交易系统,用于内部办公的OA系统,像这些系统都使用了同一个...
巴巴运动网的前端代码中,JavaScript可能用于处理用户输入、更新DOM(文档对象模型)、发送AJAX请求、实现动画效果等。现代JavaScript库和框架,如React、Vue或Angular,可能会被用于构建组件化的应用结构,提升开发...
巴巴运动网的源代码设计涵盖了电子商务网站的关键模块,包括但不限于前端用户界面、后台管理、商品展示、购物车、订单处理、用户注册与登录等。 1. **前端用户界面**:前端部分是用户与网站交互的窗口,源代码可能...
巴巴运动网源码和jar文件,完整的源码和用到的jar文件。工程配置后可直接运行。。。
【巴巴运动网 lib3】是源自巴巴运动网的一个开源项目,该项目主要包含了lib3相关的代码库,为开发者提供了丰富的功能和资源,旨在促进运动类应用的开发与创新。这个源码下载提供了深入学习和理解运动类应用开发的...
"巴巴运动网 lib1" 提供的jar包很可能是为开发者提供的一种库或者服务,方便他们在开发过程中调用相关的功能或实现。下面我们将深入探讨与jar包相关的知识点,以及如何利用它进行开发和学习。 首先,Java的jar文件...
新巴巴运动网是一个运动商品网站,它涉及到前端和后端的开发工作,主要技术栈为JavaScript(js)和Spring Boot + MyBatis(ssm)。在这个项目中,JavaScript主要用于前端交互,提供用户友好的界面和动态功能,而SSM...
3. **分页查询**:实现对数据库或其他数据源的分页查询,这可能涉及到SQL的编写,或者在ORM框架如Hibernate、MyBatis中的分页配置。 4. **分页接口或服务**:提供获取分页数据的方法,供前端调用,通常会结合上述...
巴巴运动的jar包很可能也是如此,提供了其系统运行所需的各种组件。 描述中的“好大呀”,可能意味着这个压缩包包含了大量或大型的jar包,这可能是因为巴巴运动项目复杂,涉及到多个领域的技术,或者依赖了多个开源...
通过分析这些SQL文件,开发者可以了解到新巴巴运动网的数据模型,包括各个表之间的关系、字段定义和数据类型,这对于理解系统的工作原理至关重要。 值得注意的是,资源中并未包含源码,这意味着无法直接查看到程序...
在IT行业中,分页是网页应用中不可或缺的功能,特别是在大型电商平台如巴巴运动商城这样的系统中。这个"巴巴运动商城page分页的jar包"显然包含了实现分页功能所需的类库和资源,对于开发者来说,是一个非常实用的...
【巴巴运动网源码(传智播客)】是一套基于Java编程语言开发的网站源码,主要用于构建体育运动类的在线服务平台。这套源码在IT教育领域,特别是由传智播客这样的知名教育机构中被用作教学案例,帮助学员理解和实践...