package com.yan.bo;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import org.apache.log4j.Logger;
import com.yan.domain.Product;
import com.yan.exception.DaoException;
import com.yan.service.IProductSer;
import com.yan.service.impl.ProductSerImpl;
public class Cart implements Serializable {
private static final long serialVersionUID = 1L;
private transient IProductSer ips=new ProductSerImpl();
private static Logger logger = Logger.getLogger(Cart.class);
private Integer userId;
// CartItem.product.id
private HashMap<Integer, CartItem> items;
/**
* 初始化购物车
* @param user
*/
public Cart(Integer userId) {
this.userId = userId;
items = new HashMap<Integer, CartItem>();
}
/**
* 获取UserId, 方便页面调用
* @return
*/
public Integer getUserId() {
return userId;
}
/**
*增加一个条目
* @param product
* @return
*/
public boolean addItem(Integer productId) throws DaoException {
logger.debug(productId);
if (!items.containsKey(productId)) {//购物车没有的才能购买
Product product = ips.findProductById(productId);
logger.debug(productId);
CartItem item = new CartItem();
item.setProduct(product);
item.setDrop(false);//
item.setNumber(1);//设置数量为1
items.put(product.getId(), item);
return true;
}
return false;
}
/**
* 更改数量
* @param productId
* @param num
* @return
*/
public boolean updateNum(Integer productId, int num) {
if (items.containsKey(productId)) {//有才能更改
if (num <= 0) {
return this.drop(productId);
}
CartItem item = items.get(productId);
item.setNumber(num);//
return true;
}
return false;
}
/**
*
* @param productId
* @return
*/
public boolean drop(Integer productId) {
if (items.containsKey(productId)) {
CartItem item = items.get(productId);
item.setDrop(true);
return true;
}
return false;
}
/**
*
* @param productId
* @return
*/
public boolean recovery(Integer productId) {
if (items.containsKey(productId)) {
CartItem item = items.get(productId);
item.setDrop(false);
return true;
}
return false;
}
/**
*
*/
public void clear() {
items.clear();
}
/**
* 把购物车的信息转换为字符串,用于Cookie存儲
*
* @return
* @throws UnsupportedEncodingException
*/
public String serialize() {
StringBuilder buffer = new StringBuilder();
buffer.append(userId).append("@");
if (items.isEmpty()) {
buffer.append("0");
} else {
Iterator<Integer> it = items.keySet().iterator();
while (it.hasNext()) {
Integer productId = it.next();
logger.debug(productId);
int num = items.get(productId).getNumber();
boolean drop = items.get(productId).isDrop();
buffer.append(productId + "," + num + "," + drop);
buffer.append(";");
}
}
if (buffer.length() > 0)
buffer.deleteCharAt(buffer.length() - 1);//去掉最后一个;
logger.debug(buffer);
return buffer.toString();
}
/**
*
* @param content
* @throws DaoException
* @throws UnsupportedEncodingException
*/
public void load(String content) {
this.items.clear();//清空后,放cookie的
String userId = content.substring(0, content.indexOf("@"));
if (userId != null && Integer.parseInt(userId) == this.userId) {//怕同一台电脑,
//同时被两个人用
content = content.substring(content.indexOf("@") + 1);//截取@后的内容
if (content == null || "0".equals(content))//防止空指针异常
return;//没有条目,返回空
if (content != null && content.length() > 0) {
String[] itemsArry = content.split(";");
for (int i = 0; i < itemsArry.length; i++) {
String[] itemArry = itemsArry[i].split(",");
logger.debug(Arrays.toString(itemArry));//随时记录日志
Integer id = Integer.valueOf(itemArry[0]);
int number = Integer.parseInt(itemArry[1]);
boolean drop = Boolean.parseBoolean(itemArry[2]);
Product product = ips.findProductById(id);
CartItem item = new CartItem();
item.setProduct(product);
item.setNumber(number);
item.setDrop(drop);
items.put(product.getId(), item);
logger.debug(items);
}
}
}
}
/**
*
* @return
*/
public boolean isEmpty() {
return items.isEmpty();
}
/**
* 返回所有没有被标记为删除的 list列表
* @return
*/
public List<CartItem> getItems() {
List<CartItem> list = new ArrayList<CartItem>();
Iterator<Integer> it = items.keySet().iterator();
while (it.hasNext()) {
CartItem item = items.get(it.next());
logger.debug(item);
logger.debug(item.getProduct());
logger.debug(item.getProduct().getFixedprice());
if (!item.isDrop()) {
list.add(item);
}
}
return list;
}
/**
* 返回所有被标记为删除的list列表
* @return
*/
public List<CartItem> getDropItems() {
List<CartItem> list = new ArrayList<CartItem>();
Iterator<Integer> it = items.keySet().iterator();
while (it.hasNext()) {
CartItem item = items.get(it.next());
if (item.isDrop()) {
list.add(item);
}
}
return list;
}
/**
* 返回市场总价格
* @return
*/
public double getTotalPrice() {
double totalPrice = 0;
Iterator<Integer> it = items.keySet().iterator();
while (it.hasNext()) {
CartItem item = items.get(it.next());
if (!item.isDrop()) {
totalPrice += item.getProduct().getFixedprice()
* item.getNumber();
System.out.println(totalPrice+"............."+item.getProduct().getFixedprice());
}
}
return totalPrice;
}
/**
* 返回dangdang市场价
* @return
*/
public double getDangPrice() {
double dangPrice = 0;
Iterator<Integer> it = items.keySet().iterator();
while (it.hasNext()) {
CartItem item = items.get(it.next());
if (!item.isDrop()) {
dangPrice += item.getProduct().getDangprice()
* item.getNumber();
}
}
return dangPrice;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
当当网实现源码超好dangdang_struts2_jdbc (533个子文件)
RegisterAction.class 7KB
Cart.class 6KB
ProductDao.class 6KB
UserDaoImpl.class 5KB
ListBookAction.class 4KB
CartAction.class 4KB
OrderAction.class 4KB
JdbcUtil.class 4KB
AuthorizeAction.class 3KB
OrderDaoImpl.class 3KB
ProductSerImpl.class 3KB
Order.class 3KB
Product.class 2KB
CategoryDao.class 2KB
UserSerImpl.class 2KB
CategorySerImpl.class 2KB
CookieUtil.class 2KB
AuthorizeUtil.class 2KB
Item.class 2KB
User.class 2KB
AuthorizeInterceptor.class 2KB
Category.class 2KB
OrderSerImpl.class 1KB
TransactionJdbcImpl.class 1KB
Address.class 1KB
Test.class 1KB
MainAction.class 1KB
TestServlet.class 1KB
CartItem.class 979B
MD5Util.class 952B
MyFilter.class 945B
IProduct.class 860B
TransactionFactory.class 757B
DaoException.class 551B
UUIDUtil.class 538B
IProductSer.class 532B
Constants.class 499B
SerFactory.class 463B
IUserSer.class 418B
IUser.class 408B
ICategorySer.class 327B
ICategory.class 280B
IOrderSer.class 207B
IOrder.class 197B
ITransaction.class 194B
.classpath 1KB
book.css 25KB
second.css 20KB
register_login.css 14KB
book_head090107.css 13KB
login.css 13KB
book1.css 11KB
comm_answer.css 10KB
list.css 10KB
shopping_vehicle.css 9KB
shopping_head.css 5KB
booksaleslist.css 5KB
page_bottom.css 3KB
public_footer.css 2KB
research.css 2KB
product_exp.css 1KB
secBook_Show.css 1KB
navi.css 1KB
pubsug090107.css 555B
Thumbs.db 45KB
Thumbs.db 34KB
Thumbs.db 14KB
Thumbs.db 12KB
Thumbs.db 7KB
Thumbs.db 7KB
Thumbs.db 6KB
Thumbs.db 4KB
Thumbs.db 4KB
Entries 8KB
Entries 2KB
Entries 2KB
Entries 710B
Entries 674B
Entries 383B
Entries 353B
Entries 345B
Entries 340B
Entries 247B
Entries 195B
Entries 192B
Entries 146B
Entries 98B
Entries 84B
Entries 54B
Entries 53B
Entries 46B
Entries 45B
Entries 43B
Entries 12B
Entries 12B
ancz081216_button05.gif 25KB
xssj_banner.gif 8KB
d_introduce.gif 5KB
cheap4.gif 4KB
cheap3.gif 4KB
共 533 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论
- chulanchenyu2014-06-30还可以,有些地方可以借鉴~
- osatnbosatnb2014-10-06可以借鉴,不过感觉有点坑
- lisaixiao2013-08-29代码非常详细
- 一水云间2014-05-19还不错,可以借鉴!
shoulder2010
- 粉丝: 1
- 资源: 26
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功