package com.yinhe;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.sun.java_cup.internal.shift_action;
import com.yinhe.dao.Order;
import com.yinhe.model.Goods;
public class ShoppingAction extends ActionSupport implements ModelDriven<Goods> {
Goods goods=new Goods();
Map<String, Goods> map=new HashMap<String, Goods>();//存放商品,一个唯一id对应一件商品
private Set<Goods> carGoodsList=new HashSet<Goods>();//返回购物车里的所有商品
Order orderDao=new Order();
//得到保存在session范围里面的map
Map<String, Goods> getSessionMapList=(Map<String, Goods>) ActionContext.getContext().getSession().get("sessionMapList");
Set<Goods> sessionGoodsList=(Set<Goods>)ActionContext.getContext().getSession().get("sessionGoodsList");
//选购商品加入到购物车
public String addCar() {
if(getSessionMapList==null){
map.put(goods.getGid(), goods);
ActionContext.getContext().getSession().put("sessionMapList", map);//将添加的键值商品map保存到session中,便于同一商品的计数
carGoodsList.add(map.get(goods.getGid()));//保存该map键对应的商品到购物车
ActionContext.getContext().getSession().put("sessionGoodsList", carGoodsList);//将购物车商品保存到session中,便于统计本次购物商品种类
return "addCarOK";
}else{
if(getSessionMapList.containsKey(goods.getGid())){
getSessionMapList.get(goods.getGid()).setCount(getSessionMapList.get(goods.getGid()).getCount()+1);
getSessionMapList.get(goods.getGid()).setSigleTotal(getSessionMapList.get(goods.getGid()).getSigleTotal()+goods.getGprice());
ActionContext.getContext().getSession().put("sessionMapList", getSessionMapList);//将添加的键值商品map保存到session中,便于同一商品的计数
sessionGoodsList.add(getSessionMapList.get(goods.getGid()));//保存修改后,该map键对应的商品到session范围中
carGoodsList.addAll(sessionGoodsList);//将更改后的session中所有的goods集合再次存入购物车
ActionContext.getContext().getSession().put("sessionGoodsList", carGoodsList);//将购物车商品保存到session中,便于统计本次购物商品种类
return "addCarOK";
}else{
getSessionMapList.put(goods.getGid(), goods);
ActionContext.getContext().getSession().put("sessionMapList", getSessionMapList);//将添加的键值商品map保存到session中,便于同一商品的计数
sessionGoodsList.add(goods);
carGoodsList.addAll(sessionGoodsList);//将更改后的session中所有的goods集合再次存入购物车
ActionContext.getContext().getSession().put("sessionGoodsList", carGoodsList);//将购物车商品保存到session中,便于统计本次购物商品种类
return "addCarOK";
}
}
}
//删除购物车中的商品
public String delCar() {
getSessionMapList.remove(goods.getGid());
ActionContext.getContext().getSession().put("sessionMapList", getSessionMapList);
sessionGoodsList.remove(goods);
carGoodsList.addAll(sessionGoodsList);
ActionContext.getContext().getSession().put("sessionGoodsList", carGoodsList);//将购物车商品保存到session中,便于统计本次购物商品种类
return "delCarOK";
}
//修改购物车中的商品数量
public String updateCar(){
System.out.println(goods.getGid()+"\t"+goods.getCount());
getSessionMapList.get(goods.getGid()).setCount(goods.getCount());
getSessionMapList.get(goods.getGid()).setSigleTotal(goods.getCount()*goods.getGprice());
ActionContext.getContext().getSession().put("sessionMapList", getSessionMapList);//将添加的键值商品map保存到session中,便于同一商品的计数
sessionGoodsList.add(getSessionMapList.get(goods.getGid()));//保存修改后,该map键对应的商品到session范围中
carGoodsList.addAll(sessionGoodsList);//将更改后的session中所有的goods集合再次存入购物车
ActionContext.getContext().getSession().put("sessionGoodsList", carGoodsList);//将购物车商品保存到session中,便于统计本次购物商品种类
return "updateCarOK";
}
//下单准备购买
public String order() {
int totalMony=0;
Iterator<Goods> allgs=sessionGoodsList.iterator();
while (allgs.hasNext()) {
Goods elemGoods = (Goods)allgs.next();
totalMony+=elemGoods.getSigleTotal();
}
ActionContext.getContext().getSession().put("totalMony", totalMony);
carGoodsList=sessionGoodsList;
return "confirmOrder";
}
//下单
public String confirmOrder() {
Iterator<Goods> allgs=sessionGoodsList.iterator();
while (allgs.hasNext()) {
Goods elemGoods = (Goods)allgs.next();
orderDao.order(elemGoods);
}
ActionContext.getContext().put("orderNO", "您的订单号是:"+System.currentTimeMillis());
return "orderOk";
}
public Goods getModel() {
// TODO Auto-generated method stub
return goods;
}
public Map<String, Goods> getMap() {
return map;
}
public void setMap(Map<String, Goods> map) {
this.map = map;
}
public Set<Goods> getCarGoodsList() {
return carGoodsList;
}
public void setCarGoodsList(Set<Goods> carGoodsList) {
this.carGoodsList = carGoodsList;
}
}