📄 ordermanage.java
字号:
/*
* OrderManage.java
*
* Created on 2007年7月20日, 下午3:12
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package czm;
import java.sql.*;
import java.text.DateFormat;
import java.util.*;
/**
*
* @author Administrator
*/
public class OrderManage {
/** Creates a new instance of OrderManage */
private boolean isAdmin=false;
private User Manager=null;
static final int WAITFORCHECK=1;
static final int PASS=2;
static final int UNPASS=3;
public OrderManage() {
}
public OrderManage(User user)//一般用户
{
this.Manager=user;
}
public OrderManage(boolean isadmin)//一般用户或管理员
{
this.isAdmin=isadmin;
}
/**
生成订单的ID,返回大等0的新订单ID,出错返回-1
*
*/
public long getNewOrderID(){
opendb odb=new opendb();
ResultSet rs;
long orderid=0;
String strSqlT = "select max(orderID) from orderInfo";
rs=odb.executeQuery(strSqlT);
try{
if(rs.next()){
orderid=rs.getLong(1);
}
}catch(SQLException e)
{
return -1;
}
orderid++;
return orderid;
}
/**
* 创建一个新定单
*/
public void setManager(User user)
{
this.Manager=user;
}
public User getManage()
{
return this.Manager;
}
public void setAdmin(boolean isamdin)
{
this.isAdmin=isamdin;
}
public boolean BalanceOrder(Order order) {
if(order.getOrderID()==0l)order.setOrderID(this.getNewOrderID());
return BalanceOrder(order.getUserID(),order.getCart(),order.getReceiverAddress(),
order.getReceiverName(),order.getTel(),order.getReceiverZip(),
order.getRem(),order.getPaymentType());
}
/**
* 创建一个新定单
*/
public boolean BalanceOrder(String userid,Cart cart,String address,
String receiver,String tel,String postnum,
String rem,int pt)
{
Hashtable hashbooks=cart.getBooks();
float orderprice= new Benifit().Discount(userid,cart.getAccount()); //购物车中书籍总额打折****************
if(hashbooks.isEmpty()||orderprice<=0.001f) //购物车没货物
{
return false;
}
long neworderid=this.getNewOrderID();
int orderstate=this.WAITFORCHECK;
String currentdate=DateFormat.getDateInstance(DateFormat.MEDIUM)
.format(new java.util.Date());
int bookkinds=hashbooks.size(); //购物车中书籍的种数
String[] strSql=new String[bookkinds+1];
int i=0;
Iterator it=hashbooks.keySet().iterator();
while(it.hasNext()){
String itemisbn=(String)it.next(); //取得HASHTABL键值对
Integer itemcount=(Integer)hashbooks.get(itemisbn); //购造SQL语句
strSql[i++]="insert into Orderdetail(orderid,bookisbn,bookcount)" +
" values("+neworderid+",'"+
itemisbn+"',"+itemcount+")";
}
strSql[i]="insert into orderinfo values("+neworderid+",'"+userid+"','"+receiver
+"','"+address+"','"+postnum+"','"+rem+"',"+orderprice+",'"+currentdate+
"',"+orderstate+","+pt+",'"+tel+"')";
if(new opendb().executeUpdates(strSql))return true; //执行事务
return false;
}
/**
* 删除定单
*/
public boolean DeleteOrder(long orderid)
{
String strSQL="select memberid,orderstate from orderinfo where orderid="+orderid;
opendb dbopt=new opendb();
ResultSet rs=dbopt.executeQuery(strSQL);
String userid=null;
int orderstate=1;
try{
if(rs.next())
{
userid=rs.getString(1);
orderstate=rs.getInt(2);
}
else
{
return false; //找不到该订单
}
rs.close();
}
catch(SQLException e)
{
return false;
}
if(this.isAdmin==false)
{
if(orderstate==this.PASS||!userid.equals(Manager.ID))
return false; //权限不足
}
String strSqlTran[]=new String[2];
strSqlTran[0]="delete from orderdetail where orderid="+orderid;
strSqlTran[1]="delete from orderinfo where orderid="+orderid;
if(dbopt.executeUpdates(strSqlTran)) //执行事务
{
return true;
}
return false;
}
/**
* 修改定单
*/
public boolean EditOrder (long orderid,String userid,
String address,String receiver,String tel,
String postnum,float oprice,String date,
String rem,int pt)
{
String strSQL="select orderstate from orderinfo where orderid="+orderid;
opendb dbopt=new opendb();
ResultSet rs=dbopt.executeQuery(strSQL);
int orderstate=1;
try{
if(rs.next())
{
orderstate=rs.getInt(1);
}
else
{
return false; //找不到该订单
}
rs.close();
}catch(SQLException e)
{
return false;
}
if(this.isAdmin==false)
{
if(orderstate==this.PASS||!userid.equals(Manager.ID))
return false; //权限不足
}
String strSql="update orderinfo set memberid='"+userid+"',receivername='"+receiver+
"',receiverAddress='"+address+"',receiverZip='"+postnum+
"',orderRem='"+rem+"',orderPrice="+oprice+",orderDate='"+date+
"',receiverTel='"+tel+"',paymenttype="+pt+" where orderid="+orderid;
if(new opendb().executeUpdate(strSql))return true; //执行修改
return false;
}
/**
* 修改定单状态
*/
public boolean ChangeOrderState(long orderid,int os)
{
if(!isAdmin)return false;
ArrayList strsqls=new ArrayList();
opendb dbopt=new opendb();
if(os==this.WAITFORCHECK)return false;
if(os==this.PASS)
{
String strSQL="select bookisbn,bookcount from orderdetail where orderid="+orderid;
ResultSet rs=dbopt.executeQuery(strSQL);
try{
while(rs.next()) //取出订单的明细
{
String itemisbn=rs.getString(1);
int itemcount=rs.getInt(2); //修改对应书籍库存
String tmpstrsql="update bookstate set booknum=booknum-"+itemcount+
",sailnum=sailnum+"+itemcount+" where bookisbn='"+itemisbn+"'";
strsqls.add(tmpstrsql);
}
}
catch(SQLException e)
{
return false;
}
}
strsqls.add("update orderinfo set orderstate="+os+" " +
"where orderid="+orderid);
if(dbopt.executeUpdates(getStringsFormArrayList(strsqls)))
{
return true;
}
else
{
return false;
}
}
/**
* 通过ID查找订单
*/
public Order FindOrderByID (long orderid)
{
String strsql="select * from orderinfo where orderid="+orderid;
opendb dbopt=new opendb();
ResultSet rs=dbopt.executeQuery(strsql);
try{
if(rs.next())
{
long orderID=rs.getLong(1);
String userID = rs.getString(2);
if(!this.isAdmin&&!this.Manager.ID.equals(userID))return null; //权限不足
String receiverName = rs.getString(3);
String receiverAddress=rs.getString(4);
String receiverZip =rs.getString(5);
String orderRem=rs.getString(6);
float orderPrice = rs.getFloat(7);
java.util.Date orderDate;
try{
orderDate = java.text.DateFormat.getDateInstance(DateFormat.MEDIUM).parse(rs.getString(8));
}catch(Exception e){
orderDate=null;
}
int orderState=rs.getInt(9);
int pt=rs.getInt(10);
String receiverTel=rs.getString(11);
rs.close();
Cart cart=new Cart();;
String strSQL="select bookisbn,bookcount from orderdetail where orderid="+orderid;
ResultSet rs1=dbopt.executeQuery(strSQL);
while(rs1.next())
{
cart.AddBookToCart(rs1.getString(1),rs1.getInt(2));
}
rs1.close();
return new Order(orderID,userID,receiverName,receiverAddress,
receiverTel,receiverZip,orderRem,cart,orderDate,
orderState,orderPrice,pt);
}
}catch(SQLException e)
{ }
return null;
}
/**
* 通过会员名查找订单/////////
*/
public Order[] FindOrdersByUserName(String username)
{
if(!isAdmin)return null;
ArrayList orders=new ArrayList();
String strsql="select orderid from orderinfo inner join buyerinfo on = " +
"orderinfo.Memberid=buyerinfo.memberid and membername='"+username+"'";
opendb dbopt=new opendb();
ResultSet rs=dbopt.executeQuery(strsql);
if(rs==null)return null;
try{
while(rs.next())
{
orders.add(FindOrderByID(rs.getLong(1)));
}
rs.close();
}
catch(SQLException e)
{
return null;
}
return this.getOrdersFromArrayList(orders);
}
/**
* 通过会员ID查找订单
*/
public Order[] FindOrdersByUserID(String userid)
{
if(!this.isAdmin&&!this.Manager.ID.equals(userid))return null; //权限不足
ArrayList orders=new ArrayList();
String strsql="select orderid from orderinfo where " +
"orderinfo.memberid='"+userid+"'";
opendb dbopt=new opendb();
ResultSet rs=dbopt.executeQuery(strsql);
if(rs==null)return null;
try{
while(rs.next())
{
orders.add(FindOrderByID(rs.getLong(1)));
}
rs.close();
}
catch(SQLException e)
{
return null;
}
return this.getOrdersFromArrayList(orders);
}
/**
* 通过下订日期查找订单
*/
public Order[] FindOrdersByDate (java.util.Date orderdate)
{
if(!isAdmin)return null;
ArrayList orders=new ArrayList();
String strsql="select orderid from orderinfo where " +
"orderinfo.orderdate=#"+orderdate+"#";
opendb dbopt=new opendb();
ResultSet rs=dbopt.executeQuery(strsql);
if(rs==null)return null;
try{
while(rs.next())
{
orders.add(FindOrderByID(rs.getLong(1)));
}
rs.close();
}
catch(SQLException e)
{
return null;
}
return this.getOrdersFromArrayList(orders);
}
/**
* 通过状态查找订单
*/
public Order[] FindOrdersByState (int os)
{
if(!isAdmin)return null;
ArrayList orders=new ArrayList();
String strsql="select orderid from orderinfo where " +
"orderinfo.orderstate="+os;
opendb dbopt=new opendb();
ResultSet rs=dbopt.executeQuery(strsql);
if(rs==null)return null;
try{
while(rs.next())
{
orders.add(FindOrderByID(rs.getLong(1)));
}
}
catch(SQLException e)
{
return null;
}
return this.getOrdersFromArrayList(orders);
}
/**
* 查找所有订单
*/
public Order[] FindAllOrders()
{
if(!isAdmin)return null;
ArrayList orders=new ArrayList();
String strsql="select orderid from orderinfo";
opendb dbopt=new opendb();
ResultSet rs=dbopt.executeQuery(strsql);
if(rs==null)return null;
try{
while(rs.next())
{
orders.add(FindOrderByID(rs.getLong(1)));
}
rs.close();
}
catch(SQLException e)
{
return null;
}
return this.getOrdersFromArrayList(orders);
}
private Order[] getOrdersFromArrayList(ArrayList orders)
{
Order[] tmpresult=new Order[orders.size()];
for (int i = 0; i < orders.size(); i++) {
tmpresult[i]=(Order)orders.get(i);
}
return tmpresult;
}
private String[] getStringsFormArrayList(ArrayList strs)
{
String[] tmpresult=new String[strs.size()];
for (int i = 0; i < strs.size(); i++) {
tmpresult[i]=(String)strs.get(i);
}
return tmpresult;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -