?? cartserviceimpl.java
字號:
package com.service;
import java.sql.*;
import java.util.*;
import com.ORM.*;
import com.base.BaseLog;
import org.hibernate.*;
public class CartServiceImpl extends BaseLog implements CartService {
/** 選購商品 */
public boolean addCart(Member member, Merchandise mer, int number)
throws Exception {
Session session = MySessionFactory.getSession();
Transaction tx = null;
boolean status = false;
try{
Cartselectedmer sel = null;
int favourable = member.getMemberlevel().getFavourable().intValue();
//判斷該會員是否已經(jīng)有使用中的購物車
String hql ="from Cart as a where a.member=:member and a.cartStatus=0";
Query query = session.createQuery(hql);
query.setEntity("member", member);
query.setMaxResults(1);
tx = session.beginTransaction();
Cart cart = (Cart)query.uniqueResult();
if (cart==null){
cart = new Cart();
cart.setCartStatus(new Integer(0));
cart.setMember(member);
cart.setMoney(Double.valueOf(number*mer.getPrice().doubleValue()));
cart.getMerchandises().add(mer);
session.save(cart);
}else{
//如果選購的是已經(jīng)選購過的商品則只增加商品數(shù)量即可
hql = "select a from Cartselectedmer as a where a.cart=:cartid and a.merchandise=:merid order by a.id desc";
query = session.createQuery(hql);
query.setInteger("cartid", cart.getId().intValue());
query.setInteger("merid", mer.getId().intValue());
query.setMaxResults(1);
sel = (Cartselectedmer)query.uniqueResult();
int total = number;
System.out.println((total*mer.getPrice().doubleValue()*favourable/100));
if(sel!=null){
total = number+sel.getNumber().intValue();
sel.setNumber(Integer.valueOf(total));
if (mer.getSpecial().intValue()==1){//特價(jià)商品
sel.setPrice(mer.getSprice());
sel.setMoney(Double.valueOf(total*mer.getSprice().doubleValue()));
}else{//普通商品
sel.setPrice(Double.valueOf(mer.getPrice().doubleValue()*favourable/100));
sel.setMoney(Double.valueOf(total*mer.getPrice().doubleValue()*favourable/100));
}
session.update(sel);
}else{
cart.getMerchandises().add(mer);
}
if (mer.getSpecial().intValue()==1){//特價(jià)商品
cart.setMoney(Double.valueOf(cart.getMoney().doubleValue()+number*mer.getSprice().doubleValue()));
}else{//普通商品
cart.setMoney(Double.valueOf(cart.getMoney().doubleValue()+number*mer.getPrice().doubleValue()*favourable/100));
}
session.update(cart);
}
tx.commit();
//如果是尚未選購過的則要修改選購記錄的有關(guān)字段
if(sel==null){
tx = session.beginTransaction();
hql = "select a from Cartselectedmer as a where a.cart=:cartid and a.merchandise=:merid order by a.id desc";
query = session.createQuery(hql);
query.setInteger("cartid", cart.getId().intValue());
query.setInteger("merid", mer.getId().intValue());
query.setMaxResults(1);
sel = (Cartselectedmer)query.uniqueResult();
if(sel!=null){
sel.setNumber(Integer.valueOf(number));
if (mer.getSpecial().intValue()==1){//特價(jià)商品
sel.setPrice(mer.getSprice());
sel.setMoney(Double.valueOf(number*mer.getSprice().doubleValue()));
}else{//普通商品
sel.setPrice(Double.valueOf(mer.getPrice().doubleValue()*favourable/100));
sel.setMoney(Double.valueOf(number*mer.getPrice().doubleValue()*favourable/100));
}
session.update(sel);
}
tx.commit();
}
status = true;
}catch(Exception ex){
if(tx!=null)tx.rollback();
logger.info("在執(zhí)行CartServiceImpl類中的addCart方法時(shí)出錯(cuò):\n");
ex.printStackTrace();
}finally{
MySessionFactory.closeSession();
}
return status;
}
/** 查看購物車中的選購商品 */
public List browseCart(Member member) throws Exception {
Session session = MySessionFactory.getSession();
Transaction tx = null;
List result = null;
try{
//取得該會員的使用中購物車ID
Integer cartid = new Integer(0);
String hql ="from Cart as a where a.member=:member and a.cartStatus=0";
Query query = session.createQuery(hql);
query.setEntity("member", member);
query.setMaxResults(1);
tx = session.beginTransaction();
Cart cart = (Cart)query.uniqueResult();
if (cart!=null){
cartid = cart.getId();
}
tx.commit();
//瀏覽購物車中的所有選購記錄
hql ="from Cartselectedmer as a where a.cart=:cartid";
query = session.createQuery(hql);
query.setInteger("cartid", cartid.intValue());
tx = session.beginTransaction();
result = query.list();
if(!Hibernate.isInitialized(result)){
Hibernate.initialize(result);
}
tx.commit();
}catch(Exception ex){
if(tx!=null)tx.rollback();
logger.info("在執(zhí)行CartServiceImpl類中的browseCart方法時(shí)出錯(cuò):\n");
ex.printStackTrace();
}finally{
MySessionFactory.closeSession();
}
return result;
}
/** 清空購物車 */
public boolean clearCart(Member member) throws Exception {
Session session = MySessionFactory.getSession();
Transaction tx = null;
boolean status = false;
try{
//取得該會員的使用中購物車ID
Integer cartid = new Integer(0);
String hql ="from Cart as a where a.member=:member and a.cartStatus=0";
Query query = session.createQuery(hql);
query.setEntity("member", member);
query.setMaxResults(1);
tx = session.beginTransaction();
Cart cart = (Cart)query.uniqueResult();
if (cart!=null){
cartid = cart.getId();
cart.setMoney(Double.valueOf(0));
session.update(cart);
}
tx.commit();
//刪除購物車中的所有選購記錄(通過JDBC進(jìn)行批量刪除)
Connection con = session.connection();
Statement stat = con.createStatement();
String sql ="delete from Cartselectedmer where cart="+cartid;
tx = session.beginTransaction();
stat.executeUpdate(sql);
tx.commit();
if (stat!=null)stat.close();
status = true;
if(tx!=null)tx.rollback();
logger.info("在執(zhí)行CartServiceImpl類中的clearCart方法時(shí)出錯(cuò):\n");
ex.printStackTrace();
}finally{
MySessionFactory.closeSession();
}
return status;
}
/** 刪除已選購商品 */
public boolean delCart(Integer id) throws Exception {
Session session = MySessionFactory.getSession();
Transaction tx = null;
boolean status = false;
try{
//刪除指定的選購記錄
double money = 0;
Integer cartid = new Integer(0);
tx = session.beginTransaction();
Cartselectedmer sel = (Cartselectedmer)session.get(Cartselectedmer.class, id);
if (sel!=null){
money = sel.getMoney().doubleValue();
cartid = sel.getCart();
session.delete(sel);
}
tx.commit();
//更新購物車總金額
tx = session.beginTransaction();
Cart cart = (Cart)session.get(Cart.class, cartid);
if (cart!=null){
cart.setMoney(Double.valueOf(cart.getMoney().doubleValue()-money));
session.update(cart);
}
tx.commit();
status = true;
}catch(Exception ex){
if(tx!=null)tx.rollback();
logger.info("在執(zhí)行CartServiceImpl類中的delCart方法時(shí)出錯(cuò):\n");
ex.printStackTrace();
}finally{
MySessionFactory.closeSession();
}
return status;
}
/** 裝載指定會員的購物車 */
public Cart loadCart(Member member) throws Exception {
Session session = MySessionFactory.getSession();
Transaction tx = null;
Cart cart = null;
try{
//取得該會員的使用中購物車
String hql ="from Cart as a where a.member=:member and a.cartStatus=0";
Query query = session.createQuery(hql);
query.setEntity("member", member);
query.setMaxResults(1);
tx = session.beginTransaction();
cart = (Cart)query.uniqueResult();
tx.commit();
}catch(Exception ex){
if(tx!=null)tx.rollback();
logger.info("在執(zhí)行CartServiceImpl類中的loadCart方法時(shí)出錯(cuò):\n");
ex.printStackTrace();
}finally{
MySessionFactory.closeSession();
}
return cart;
}
/** 調(diào)整選購商品的數(shù)量 */
public boolean modiCart(Integer id, int number) throws Exception {
Session session = MySessionFactory.getSession();
Transaction tx = null;
boolean status = false;
try{
//修改指定的選購記錄
double diff = 0;
Integer cartid = new Integer(0);
tx = session.beginTransaction();
Cartselectedmer sel = (Cartselectedmer)session.get(Cartselectedmer.class, id);
if (sel!=null){
cartid = sel.getCart();
diff = (number - sel.getNumber().intValue())*sel.getPrice().doubleValue();
sel.setNumber(Integer.valueOf(number));
sel.setMoney(Double.valueOf(sel.getPrice().doubleValue()*number));
session.update(sel);
}
tx.commit();
//更新購物車總金額
tx = session.beginTransaction();
Cart cart = (Cart)session.get(Cart.class, cartid);
if (cart!=null){
cart.setMoney(Double.valueOf(cart.getMoney().doubleValue()+diff));
session.update(cart);
}
tx.commit();
status = true;
}catch(Exception ex){
if(tx!=null)tx.rollback();
logger.info("在執(zhí)行CartServiceImpl類中的modiCart方法時(shí)出錯(cuò):\n");
ex.printStackTrace();
}finally{
MySessionFactory.closeSession();
}
return status;
}
/** 更新購物車 */
public boolean updateCart(Cart cart) throws Exception {
Session session = MySessionFactory.getSession();
Transaction tx = null;
boolean status = false;
try{
tx = session.beginTransaction();
session.update(cart);
tx.commit();
status = true;
}catch(Exception ex){
if(tx!=null)tx.rollback();
logger.info("在執(zhí)行CartServiceImpl類中的updateCart方法時(shí)出錯(cuò):\n");
ex.printStackTrace();
}finally{
MySessionFactory.closeSession();
}
return status;
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -