ShoppingCart.cs
上传用户:xiecaij
上传日期:2015-02-08
资源大小:2016k
文件大小:4k
源码类别:

百货/超市行业

开发平台:

ASP/ASPX

  1. using System;
  2. using System.Data;
  3. using System.Data.SqlClient;
  4. namespace eshop.BLL
  5. {
  6. /// <summary>
  7. /// ShoppingCart 的摘要说明。
  8. /// </summary>
  9. public class ShoppingCart
  10. {
  11. public ShoppingCart()
  12. {
  13. }
  14. public void AddItem(string cartId, int productId, int quantity)
  15. {
  16. SqlParameter[] para = {
  17.   new SqlParameter("@cartId", cartId),
  18.   new SqlParameter("@productId", productId),
  19.   new SqlParameter("@quantity", quantity)
  20.   };
  21. DAL.SQLHelper.ExecuteNonQuery(DAL.SQLHelper.CONN_STRING, CommandType.StoredProcedure, 
  22. "ShoppingCartAddItem", para);
  23. }
  24. public SqlDataReader GetItems(string cartId)
  25. {
  26. SqlParameter[] para = {
  27.   new SqlParameter("@cartId", cartId)
  28.   };
  29. return DAL.SQLHelper.ExecuteReader(DAL.SQLHelper.CONN_STRING, CommandType.StoredProcedure, 
  30. "ShoppingCartList", para);
  31. }
  32. public void MigrateCart(string originalCartId, string newCartId)
  33. {
  34. SqlParameter[] para = {
  35.   new SqlParameter("@originalCartId", originalCartId),
  36.   new SqlParameter("@newCartId", newCartId)
  37.   };
  38. DAL.SQLHelper.ExecuteNonQuery(DAL.SQLHelper.CONN_STRING, CommandType.StoredProcedure,
  39. "ShoppingCartMigrate", para);
  40. }
  41. public void UpdateItem(string cartId, int productId, int quantity)
  42. {
  43. if (quantity < 0)
  44. {
  45. throw new Exception("Quantity can't be negative");
  46. }
  47. SqlParameter[] para = {
  48.   new SqlParameter("@cartId", cartId),
  49.   new SqlParameter("@productId", productId),
  50.   new SqlParameter("@quantity", quantity)
  51.   };
  52. DAL.SQLHelper.ExecuteNonQuery(DAL.SQLHelper.CONN_STRING, CommandType.StoredProcedure, 
  53. "ShoppingCartUpdate", para);
  54. }
  55. public void RemoveItem( string cartId, int productId)
  56. {
  57. SqlParameter[] para = {
  58.   new SqlParameter("@cartId", cartId),
  59.   new SqlParameter("@productId", productId)
  60.   };
  61. DAL.SQLHelper.ExecuteNonQuery(DAL.SQLHelper.CONN_STRING, CommandType.StoredProcedure, 
  62. "ShoppingCartRemoveItem", para);
  63. }
  64. public int GetItemCount(string cartId)
  65. {
  66. object m_DBNull = Convert.DBNull;
  67. SqlParameter[] para = {
  68.   new SqlParameter("@cartId", cartId),
  69.   new SqlParameter("@ItemCount", SqlDbType.Int, 4, ParameterDirection.Output,
  70.   true, 0, 0, "", DataRowVersion.Default, m_DBNull)
  71.   };
  72. try
  73. {
  74. DAL.SQLHelper.ExecuteNonQuery(DAL.SQLHelper.CONN_STRING, CommandType.StoredProcedure, 
  75. "ShoppingCartItemCount", para);
  76. }
  77. catch
  78. {
  79. throw;
  80. }
  81. return Convert.ToInt32(para[1].Value);
  82. }
  83. public decimal GetTotal(string cartId)
  84. {
  85. //输出参数初始化
  86. object m_DBNull = Convert.DBNull;
  87. SqlParameter[] para = {
  88.   new SqlParameter("@cartId", cartId),
  89.   new SqlParameter("@TotalCost", SqlDbType.Money, 8, ParameterDirection.Output,
  90.   true, 0, 0, "", DataRowVersion.Default, m_DBNull)
  91.   };
  92. try
  93. {
  94. DAL.SQLHelper.ExecuteNonQuery(DAL.SQLHelper.CONN_STRING, CommandType.StoredProcedure,
  95. "ShoppingCartTotal", para);
  96. }
  97. catch
  98. {
  99. throw;
  100. }
  101. return Convert.ToDecimal(para[1].Value);
  102. }
  103. public void EmptyCart(string cartId)
  104. {
  105. SqlParameter[] para = {
  106.   new SqlParameter("@cartId", cartId)
  107.   };
  108. DAL.SQLHelper.ExecuteNonQuery(DAL.SQLHelper.CONN_STRING, CommandType.StoredProcedure, 
  109. "ShoppingCartEmpty", para);
  110. }
  111. public String GetShoppingCartId() 
  112. {
  113. // 获得HTTP请求的HttpContext实例
  114. System.Web.HttpContext context = System.Web.HttpContext.Current;
  115. // 如果用户已通过验证,则返回其用户编号作为CartId
  116. if (context.User.Identity.Name != "") 
  117. {
  118. return context.User.Identity.Name;
  119. }
  120. // 如果请求用户为匿名,则创建临时的CartId
  121. if (context.Request.Cookies["eshop_CartID"] != null) 
  122. {
  123. return context.Request.Cookies["eshop_CartID"].Value;
  124. }
  125. else 
  126. {
  127. // 生成GUID
  128. Guid tempCartId = Guid.NewGuid();
  129. // 将GUID保存到Cookie
  130. context.Response.Cookies["eshop_CartID"].Value = tempCartId.ToString();
  131. // 返回临时CartId
  132. return tempCartId.ToString();
  133. }
  134. }
  135. }
  136. }