<!--#include FILE="../db/LDB.asp"-->
<%
'---------------------------
' ASP 购物车类
'-------------常量定义----------------------------------
' 定义货物表。关键字为ID
ProductionTable="Production"
' 定义订单表,订单明细表,订单号字段名称
OrderTable="OrderTable"
OrderID="OrderID"
OrderDetailTable="OrderDetail"
'-------------常量定义结束------------------------------
'-------------类定义------------------------------------
' 购物车类
' 引用了LDB类
Class LDCart
'-----------------------------------
'私有函数部分
'-----------------------------------
Private CPList(50,2) '商品列表,采用二维数组,每个记录第一个表示商品代号,第二个表示购物数量
Private CPCount '当前购买商品的商品数
Private MyQuery '查询类
Private MyDB '数据操作类
Private CurrUserID '当前用户代号
Private Function GetInfoByID(ID)
'根据货物编号得到货物信息 返回类型为记录集
Set GetInfoByID= MyDB.DoSelect("select * from "&ProductionTable&" where ID = "&ID)
End Function
Private Function GetUserInfoByID(UserID)
'得到用户信息 返回类型为记录集
MyQuery.Cols="ID"
MyQuery.Types="1"
MyQuery.Values="=##"&UserID
Set MyDB.LDQuery=MyQuery
MyDB.TableName="User"
MyDB.Cols=""
MyDB.NeedNumber=1
Set GetInfoByID= MyDB.GetRecordSet
End Function
'-----------------------------------
'公共函数部分
'-----------------------------------
Public Function Initial
'初始化购物车
CPCount=0
CurrUserID=Session("UserID")
Set MyQuery = New LDQuery
Set MyDB = New LDB
Set MyDB.LDQuery=MyQuery
End Function
Public Function AddItem(ID)
'根据货物ID增加货物数量为1
'返回值=0:成功
'返回值=-1:货物已在购物车中
'返回值=-2:购物车已满
If CPCount = 50 then
AddItem=-2
Exit Function
End If
Dim i,res
For i=0 To CPCount-1
If ID = CPList(i,0) then
AddItem=-1
Exit Function
End If
Next
CPList(CPCount,0)=ID
CPList(CPCount,1)=1
CPCount=CPCount+1
AddItem=0
End Function
Public Function RemoveItem(ID)
'根据货物ID删除货物
'返回值=0:成功
'返回值=-1:货物不在购物车中
j=-1
For i=0 To CPCount-1
If CPList(i,0)=ID then
j=i
End If
Next
If j=-1 then
RemoveItem=-1
Exit function
End If
For i=j To CPCount-1
CPList(i,0)=CPList(i+1,0)
CPList(i,1)=CPList(i+1,1)
Next
CPList(CPCount,0)=""
CPList(CPCount,1)=0
CPCount=CPCount-1
RemoveItem=0
End Function
Public Function DisplayCart
'显示购物车
Response.write"<br>--------------------------------------------------------<Br>"
Response.write"当前用户:"&CurrUserID&"--------------------------------------------------------<Br>"
If CPCount=0 then
Response.write "购物为空!"
else
For i = 1 To CPCount
Set CurrInfo=GetInfoByID(CPList(i-1,0))
Response.write "货物代号是:"&CPList(i-1,0)&" 名称是:"&CurrInfo("mc")&" 价格是:"&CurrInfo("jg")&" 数量是:"&CPList(i-1,1)
Response.write "<br>"
Next
Response.write"--------------------------------------------------------<Br>"
Response.write "当前货物总数是:"&CPCount&" || ""当前货物总价格是:"&CountTotalPay
End If
End Function
Public Function UpdateCount(ID,Count)
'改变某商品的数量
'返回值=0:成功
'返回值=-1:货物不在购物车中
'返回值=-2:改变的数量小于等于0
If Count<1 then
UpdateCount=-2
Exit function
End If'判断,要改变的数量是不是大于等于0 如果不是,则返回错误信息-整数-2
j=-1
For i=0 To CPCount-1
If CPList(i,0)=ID then
j=i
End If
Next
If j=-1 then
UpdateCount=-1
Exit function
End If'判断要删除的货物是否已经在购物车中,如果不是,则返回错误信息-整数-1
CPList(j,1)=Count
UpdateCount=0
End Function
Public Function CountTotalPay
'计算合计价格
'返回值:合计价格
TempTotal=0
For i=0 To CPCount-1
TempTotal=TempTotal+GetInfoByID(CPList(i,0))("jg")*CPList(i,1)
Next
CountTotalPay=TempTotal
End Function
Public Function ApplyOrder '提交订单
'返回值=0:成功
ZK=1 '折扣
OrderID=Replace(LDFormatDateTime(now)&CurrUserID,"-","")
OrderID=Replace(OrderID," ","")
OrderID=Replace(OrderID,":","")
MyDB.TableName=OrderTable
MyDB.Cols="UserID|HJ|SJ|IP|YB|DZ|SJR|Tel|OrderID"
MyDB.Types="1|1|0|0|0|0|0|0|0"
MyDB.Values=CurrUserID&"|"&CountTotalPay&"|"&LDFormatDateTime(now)&"|"&GetUserIP()&"|"&YB&"|"&DZ&"|"&SJR&"|"&Tel&"|"&OrderID
MyDB.Add
MyDB.TableName=OrderDetailTable
MyDb.Cols="OrderID|CPID|Count|ZK"
MyDB.Types="0|0|1|1"
For i=0 To CPCount-1
MyDB.Values=OrderID&"|"&CPList(i,0)&"|"&CPList(i,1)&"|"&ZK
MyDB.Add
Next
ApplyOrder=0
End Function
Public Function Clear '清空购物车
'返回值=0:成功
For i=1 To CPCount
CPList(i-1,0)=""
CPList(i-1,1)=0
Next
CPCount=0
End Function
Public Function DeleteOrder(OrderID)
'返回值=0:成功
MyQuery.Cols="OrderID"
MyQuery.Types="0"
MyQuery.Values="<##"&OrderID
MyDB.TableName=OrderTable
MyDB.Delete
MyDB.TableName=OrderDetailTable
MyDB.Delete
DeleteOrder=0
End Function
End Class
'-------------类定义结束--------------------------------
%>