package com.service;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.hibernate.Hibernate;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.ORM.Book;
import com.ORM.BookCar;
import com.ORM.Car;
import com.ORM.Customer;
import com.mySession.HibernateSessionFactory;
public class CarServiceImpl implements CarService {
public boolean addCar(Customer customer,Book book, int number)
throws Exception {
boolean addcarok= false;
Session session =HibernateSessionFactory.getSession();
Transaction tx = null;
try{
tx = session.beginTransaction();
BookCar bookcar = null;
//普通Book对会员进行打折
int discount=100;
if((customer.getLeval().toString()).equals("黄金会员"))
discount=90;
if((customer.getLeval().toString()).equals("白金会员"))
discount=80;
if((customer.getLeval().toString()).equals("钻石会员"))
discount=70;
String hql="from Car as a where a.customerid=:customer and status=:status";
Query query = session.createQuery(hql);
query.setString("status", "未确认");
query.setEntity("customer", customer);
query.setMaxResults(1);
Car car = (Car) query.uniqueResult();
if(null==car){//购物车为空
car = new Car();
car.setStatus("未确认");
car.setCustomerid(customer);
if(book.getStatus().intValue()==1){
car.setTotalprice(Float.valueOf(book.getDiscountprice().floatValue()));
}
else {
car.setTotalprice(Float.valueOf(book.getPrice().floatValue()*discount/100));
}
car.getBooks().add(book);
session.save(car);
}
else
{
//如果选购的是已经购过的商品,那么就增加商品的数量
hql =
"select a from BookCar as a where a.bookid=:bookid and a.carid= :carid order by a.id desc";
query = session.createQuery(hql);
query.setInteger("bookid", book.getBookid().intValue());
query.setInteger("carid", car.getCarid().intValue());
query.setMaxResults(1);
bookcar = (BookCar) query.uniqueResult();
int total = number;
if(bookcar!=null){//选购表中已经存在
total = number+bookcar.getNumber().intValue();
bookcar.setNumber(Integer.valueOf(total));
if(book.getStatus().intValue()==1)
{//Book 有特价
bookcar.setPrice(book.getDiscountprice().floatValue());
bookcar.setTprice(total*book.getDiscountprice().floatValue());
}
else {//非特价书
bookcar.setPrice((book.getPrice().floatValue())*discount/100);
bookcar.setTprice((total*book.getPrice().floatValue())*discount/100);
}
session.update(bookcar);
}
//选购表中不存在时,把car中的书籍添加到选购表中
else {
car.getBooks().add(book);
}
//对购物车进行修改
if (book.getStatus().intValue()==1){//特价商品
car.setTotalprice(Float.valueOf(car.getTotalprice().floatValue()+number*book.getDiscountprice().floatValue()));
}else{//普通商品
car.setTotalprice(Float.valueOf(car.getTotalprice().floatValue()+number*book.getPrice().floatValue()*discount/100));
}
session.update(car);
}
tx.commit();
//如果是尚未选购过的则要修改选购记录的有关字段
if(bookcar==null){
hql =
"select a from BookCar as a where a.bookid=:bookid and a.carid= :carid order by a.id desc";
query = session.createQuery(hql);
query.setInteger("bookid", book.getBookid().intValue());
query.setInteger("carid", car.getCarid().intValue());
query.setMaxResults(1);
bookcar = (BookCar) query.uniqueResult();
if(bookcar!=null){//选购表中已经存在
bookcar.setNumber(Integer.valueOf(number));
if(book.getStatus().intValue()==1)
{//Book 有特价
bookcar.setPrice(book.getDiscountprice().floatValue());
bookcar.setTprice(number*book.getDiscountprice().floatValue());
}
else {//非特价书
bookcar.setPrice((book.getPrice().floatValue())*discount/100);
bookcar.setTprice((number*book.getPrice().floatValue())*discount/100);
}
session.update(bookcar);
}
tx.commit();
}
addcarok =true;
}catch (Exception e) {
e.printStackTrace();
}
finally{
HibernateSessionFactory.closeSession();
}
return addcarok;
}
public List browsecar(Customer customer) throws Exception {
Integer carid =new Integer(0);
List result = null;
Session session = HibernateSessionFactory.getSession();
Transaction tx = null;
try {
String hql = "select a from Car as a where a.customerid=:customer and a.status=:status";
tx=session.beginTransaction();
Query query = session.createQuery(hql);
query.setEntity("customer", customer);
query.setString("status", "未确认");
query.setMaxResults(1);
Car car = (Car)query.uniqueResult();
if (car!=null) {
carid = car.getCarid();
}
tx.commit();
//浏览商品选购中的所有书籍
hql ="from BookCar as a where a.carid=:carid order by a.id desc";
query = session.createQuery(hql);
query.setInteger("carid", carid.intValue());
tx= session.beginTransaction();
result = query.list();
tx.commit();
if(Hibernate.isInitialized(result)){
Hibernate.initialize(result);
}
} catch (Exception e) {
if(tx!=null)
tx.rollback();
}finally{
HibernateSessionFactory.closeSession();
}
return result;
}
public Car loadCar(Customer customer) throws Exception {
Car car = null;
Session session = HibernateSessionFactory.getSession();
Transaction tx = null;
List list = null;
try {
String hqlString= "from Car as a where a.customerid=:customer and a.status=:status";
tx = session.beginTransaction();
Query query = session.createQuery(hqlString);
query.setEntity("customer", customer);
query.setString("status", "未确认");
query.setMaxResults(1);
car = (Car)query.uniqueResult();
tx.commit();
if (Hibernate.isInitialized(car)) {
Hibernate.initialize(car);
}
} catch (Exception e) {
if (tx!=null) {
tx.rollback();
}
e.printStackTrace();
}
return car;
}
public boolean delCarBook(int bookcarid) {
int carid =0;
float tprice=0;
boolean delok=false;
Session session = HibernateSessionFactory.getSession();
Transaction tx= null;
try {
tx= session.beginTransaction();
BookCar bookCar = (BookCar)session.get(BookCar.class, bookcarid);
if (bookCar!=null) {
carid = bookCar.getCarid();
tprice = bookCar.getTprice();
session.delete(bookCar);
}
tx.commit();
//修改购物车中的总价格
tx = session.beginTransaction();
Car car = (Car)session.get(Car.class, carid);
float totalprice = car.getTotalprice().floatValue();
car.setTotalprice(totalprice-tprice);
tx.commit();
delok = true;
} catch (Exception e) {
e.printStackTrace();
}
finally{
HibernateSessionFactory.closeSession();
}
return delok;
}
public boolean updateCar(String statusString,int carid){
Session session = HibernateSessionFactory.getSession();
Transaction tx= null;
boolean updateok= false;
try {
tx= session.beginTransaction();
Car car = (Car)session.get(Car.class, carid);
car.setStatus(statusString);
session.update(car);
tx.commit();
updateok = true;
} catch (Exception e) {
if(tx!=null)
tx.rollback();
}
finally{
HibernateSessionFactory.closeSession();
}
return updateok;
}
p
没有合适的资源?快使用搜索试试~ 我知道了~
网上书店(jsp+struts+hibernate)
共365个文件
gif:97个
class:53个
java:53个
需积分: 3 13 下载量 193 浏览量
2010-01-07
15:49:57
上传
评论
收藏 2.33MB RAR 举报
温馨提示
利用jsp hibernate 和struts 做的网上书店
资源推荐
资源详情
资源评论
收起资源包目录
网上书店(jsp+struts+hibernate) (365个子文件)
cartest.class 7KB
OrderAction.class 7KB
CarServiceImpl.class 7KB
DBConnect.class 7KB
AddBookAction.class 6KB
BookServiceImpl.class 6KB
booktest.class 6KB
admintest.class 5KB
OrderServiceImpl.class 5KB
CustomerRegistForm.class 5KB
CarAction.class 5KB
BookAction.class 5KB
ModifyBookAction.class 4KB
AddBookForm.class 4KB
BookSearch.class 4KB
ModifyBookForm.class 4KB
Book.class 4KB
AdminBookAction.class 3KB
TopLevSearchAction.class 3KB
Customer.class 3KB
UsernameCheck.class 3KB
TopLevSearchForm.class 3KB
ModifyAdminPwdServlet.class 2KB
HibernateSessionFactory.class 2KB
LoginAction.class 2KB
Order.class 2KB
CustomerServiceImpl.class 2KB
CustomerRegistAction.class 2KB
CategoryGet.class 2KB
AddAdminServlet.class 2KB
CategoryTest.class 2KB
GetBooksByCategoryAction.class 2KB
AddCategoryServlet.class 2KB
SearchAction.class 2KB
CheckLoginServlet.class 2KB
PageService.class 2KB
BookServiceImplTest.class 2KB
Car.class 2KB
BookCar.class 2KB
CategoryShow.class 2KB
LoginForm.class 2KB
MenuShow.class 2KB
UpdateNumBean.class 1KB
Category.class 1KB
TimeService.class 1KB
Admin.class 1KB
Admin.class 1KB
OutLoginAction.class 1KB
Category.class 1KB
BookService.class 866B
OrderService.class 595B
CarService.class 507B
CustomerService.class 345B
.classpath 823B
org.eclipse.wst.jsdt.ui.superType.container 49B
style.css 15KB
stylesheet.css 6KB
menu.css 2KB
styles.css 2KB
tablestyles.css 1KB
toc.css 620B
Thumbs.db 769KB
Thumbs.db 168KB
Thumbs.db 34KB
Thumbs.db 33KB
newtitle.gif 28KB
sorry.gif 24KB
icon01.gif 4KB
icon06.gif 4KB
Car_icon_02.gif 4KB
icon_LeaveWord.gif 4KB
Car_icon_06.gif 3KB
Car_icon_back.gif 3KB
Car_icon_03.gif 3KB
Car_07.gif 3KB
icon_goods.gif 2KB
icon_regster.gif 2KB
Car_09.gif 2KB
bt_gouwu.gif 2KB
bt_gouwu.gif 2KB
Car_11.gif 2KB
adminAdd.gif 2KB
Car_icon_10.gif 2KB
categoryLook.gif 2KB
EditUser_01.gif 2KB
button2.gif 2KB
icon_login.gif 2KB
Car_icon_01.gif 2KB
button.gif 2KB
c1.gif 2KB
c3.gif 2KB
yes.gif 2KB
no.gif 2KB
c2.gif 2KB
Car_icon_04.gif 2KB
Car_icon_05.gif 2KB
icon_car.gif 2KB
icon_liuyan.gif 1KB
NewGoods_04.gif 1KB
NewGoods_05.gif 1KB
共 365 条
- 1
- 2
- 3
- 4
资源评论
漫游云端
- 粉丝: 2
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于React17+React Hooks+TS4开发的仿Jira项目+源码+开发文档(毕业设计&课程设计&项目开发)
- C代码实现的Jacobi、QR方法求解特征值、特征向量
- c++线程池源文件 实例
- c++线程池main文件 实例
- c++线程池cpp文件 实例
- c++线程池头文件 实例
- 基于C++及Qt5开发的图片自动矢量化软件+高分辨率图像去噪+自动矢量化为svg/shp矢量图+不限定颜色种类和数量(高分项目)
- 美国手语字母表图像分类数据集ASL Alphabet共8.7w张29类别完整版.7z
- chap5-example-17.py
- 基于python开发的生产从shp到pbf格式的矢量地图切片+源码(期末大作业)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功