📄 orderservice.java
字号:
/**
*
*/
package com.eshop.service;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import com.eshop.form.CreditCardForm;
import com.eshop.form.NewOrderForm;
import com.eshop.form.ViewOrderForm;
import com.eshop.form.ViewOrderLineItemForm;
import com.eshop.util.DBManager;
import com.eshop.vo.Account;
import com.eshop.vo.CartItem;
import com.eshop.vo.LineItem;
import com.eshop.vo.Orders;
/**
* 处理订单业务逻辑类
* @author jonson
*
*/
public class OrderService {
/**
* 保存订单信息
* @param newOrderForm
* @return
* @throws SQLException
* @throws SQLException
*/
public boolean saveOrders(NewOrderForm newOrderForm) throws SQLException{
boolean success=false;
DBManager dbManager= new DBManager();
Connection conn=dbManager.GetConnection();
try {
//conn.setAutoCommit(false);
ResultSet rs=null;
Statement st=conn.createStatement();
rs=st.executeQuery("select max(orderid) as orderid from orders");
int orderid=0;
while(rs.next()){
orderid=rs.getInt("orderid")+1;
}
rs.close();
//保存信息到orders表
PreparedStatement ps=conn
.prepareStatement("INSERT INTO ORDERS(ORDERID,USERID,ORDERDATE,SHIPADDR1,SHIPADDR2,SHIPCITY,SHIPSTATE,shipzip,shipcountry,shiptoname,courier,totalprice) values("+orderid+",?,getDate(),?,?,?,?,?,?,?,'1',?)");
ps.setString(1, newOrderForm.getUserid());
ps.setString(2, newOrderForm.getShipaddr1());
ps.setString(3, newOrderForm.getShipaddr2());
ps.setString(4, newOrderForm.getShipcity());
ps.setString(5, newOrderForm.getShipstate());
ps.setString(6, newOrderForm.getShipzip());
ps.setString(7, newOrderForm.getShipcountry());
ps.setString(8, newOrderForm.getShiptoname());
ps.setFloat(9, newOrderForm.getTotalprice());
ps.executeUpdate();
ps.close();
//保存信息到lineitem表
Map shopCartMap=newOrderForm.getShoppingCartMap();
if(!shopCartMap.equals(null)){
Iterator it=shopCartMap.keySet().iterator();
LineItem lineItem=null;
while(it.hasNext()){
//计算linenum的值
ResultSet rs1=null;
Statement st1=conn.createStatement();
rs1=st1.executeQuery("select max(linenum) as linenum from lineitem");
int linenum=0;
while(rs1.next()){
linenum=rs1.getInt("linenum")+1;
}
rs1.close();
String itemId=(String)it.next();
CartItem cartItem=(CartItem)shopCartMap.get(itemId);
lineItem=new LineItem();
lineItem.setItemid(itemId);
lineItem.setQuantity(cartItem.getQuantity());
lineItem.setUnitprice(cartItem.getItem().getUnitcost());
PreparedStatement ps1=conn
.prepareStatement("INSERT INTO lineitem(orderid,linenum,itemid,quantity,unitprice) values("+orderid+","+linenum+",?,?,?)");
ps1.setString(1, lineItem.getItemid());
ps1.setLong(2, lineItem.getQuantity());
ps1.setFloat(3, lineItem.getUnitprice());
ps1.executeUpdate();
ps1.close();
//插入订单状态表数据
PreparedStatement ps2=conn
.prepareStatement("insert into orderstatus(orderid,linenum,timestamp,status) values("+orderid+","+linenum+",getdate(),0)");
ps2.executeUpdate();
ps2.close();
}
}
conn.commit();
success=true;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
conn.close();
}
return success;
}
/**
* 保存信用卡信息
* @param creditCardForm
* @return
*/
public boolean saveCreditCard(CreditCardForm creditCardForm) {
boolean success=false;
DBManager dbManager= new DBManager();
Connection conn=dbManager.GetConnection();
ResultSet rs=null;
Statement st;
try {
//conn.setAutoCommit(false);
st = conn.createStatement();
rs=st.executeQuery("select max(id) as id from creditCardinfo");
int id=0;
while(rs.next()){
id=rs.getInt("id")+1;
}
rs.close();
PreparedStatement ps=conn
.prepareStatement("INSERT INTO creditcardinfo(id,creditcard,exprdate,cardtype,billaddr1,billaddr2,billcity,billstate,billzip,billcountry,billtoname) values("+id+",?,?,?,?,?,?,?,?,?,?)");
ps.setString(1, creditCardForm.getCreditcard());
ps.setString(2, creditCardForm.getExprdate());
ps.setString(3, creditCardForm.getCardtype());
ps.setString(4, creditCardForm.getBilladdr1());
ps.setString(5, creditCardForm.getBilladdr2());
ps.setString(6, creditCardForm.getBillcity());
ps.setString(7, creditCardForm.getBillstate());
ps.setString(8, creditCardForm.getBillzip());
ps.setString(9, creditCardForm.getBillcountry());
ps.setString(10, creditCardForm.getBilltoname());
ps.executeUpdate();
//插入付款信息数据
long orderid=this.getOrderId();
PreparedStatement ps1=conn
.prepareStatement("insert into payinfo values("+orderid+",?,0,getdate(),"+id+")");
ps1.setString(1, creditCardForm.getPaytype());
ps1.executeUpdate();
ps1.close();
conn.commit();
success=true;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return success;
}
/**
* 获得最后生成的订单号
* @return
*/
public long getOrderId(){
long orderid=0;
DBManager dbManager= new DBManager();
Connection conn=dbManager.GetConnection();
ResultSet rs=null;
try {
Statement st=conn.createStatement();
rs=st.executeQuery("select max(orderid) as orderid from orders");
while(rs.next()){
orderid=rs.getLong("orderid");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return orderid;
}
/**
* 获得全部收货人信息
* @author jonson
*
*/
public List getOrder(){
long orderid=this.getOrderId();//获得最后生成订单的ID
ArrayList list=new ArrayList();
DBManager dbManager= new DBManager();
Connection conn=dbManager.GetConnection();
Statement st;
try {
st = conn.createStatement();
ResultSet rs=st.executeQuery("select shiptoname,shipaddr1,shipaddr2,shipcity,shipstate,shipzip,shipcountry from orders where orderid="+orderid);
Orders orders=null;
while(rs.next()){
orders=new Orders();
//收货人信息
orders.setShiptoname(rs.getString("shiptoname"));
orders.setShipaddr1(rs.getString("shipaddr1"));
orders.setShipaddr2(rs.getString("shipaddr2"));
orders.setShipcity(rs.getString("shipcity"));
orders.setShipstate(rs.getString("shipstate"));
orders.setShipzip(rs.getString("shipzip"));
orders.setShipcountry(rs.getString("shipcountry"));
list.add(orders);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
/**
* 根据orderID获得收货人信息
* @author jonson
*
*/
public List getOrderById(long orderid){
ArrayList list=new ArrayList();
DBManager dbManager= new DBManager();
Connection conn=dbManager.GetConnection();
Statement st;
try {
st = conn.createStatement();
ResultSet rs=st.executeQuery("select shiptoname,shipaddr1,shipaddr2,shipcity,shipstate,shipzip,shipcountry from orders where orderid="+orderid);
Orders orders=null;
while(rs.next()){
orders=new Orders();
//收货人信息
orders.setShiptoname(rs.getString("shiptoname"));
orders.setShipaddr1(rs.getString("shipaddr1"));
orders.setShipaddr2(rs.getString("shipaddr2"));
orders.setShipcity(rs.getString("shipcity"));
orders.setShipstate(rs.getString("shipstate"));
orders.setShipzip(rs.getString("shipzip"));
orders.setShipcountry(rs.getString("shipcountry"));
list.add(orders);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
/**
* 获得付款信息
* @return
*/
public List getPayInfo(){
long orderid=this.getOrderId();//获得最后生成订单的ID
ArrayList list=new ArrayList();
DBManager dbManager= new DBManager();
Connection conn=dbManager.GetConnection();
Statement st;
try {
st = conn.createStatement();
ResultSet rs=st.executeQuery("select * from payinfo p inner join creditcardinfo c on p.creditcardinfo=c.id where orderid="+orderid);
ViewOrderForm viewOrderForm=null;
while(rs.next()){
viewOrderForm=new ViewOrderForm();
//付款信息
viewOrderForm.setCardtype(rs.getString("cardtype"));
viewOrderForm.setCreditcard(rs.getString("creditcard"));
viewOrderForm.setExprdate(rs.getString("exprdate"));
//帐单送达地址信息
viewOrderForm.setBilltoname(rs.getString("billtoname"));
viewOrderForm.setBilladdr1(rs.getString("billaddr1"));
viewOrderForm.setBilladdr2(rs.getString("billaddr2"));
viewOrderForm.setBillcity(rs.getString("billcity"));
viewOrderForm.setBillstate(rs.getString("billstate"));
viewOrderForm.setBillzip(rs.getString("billzip"));
viewOrderForm.setBillcountry(rs.getString("billcountry"));
list.add(viewOrderForm);
}
} catch (SQLException e) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -