学习PetShop3.0(5)生成定单

转载 2006年06月16日 09:03:00

点proceed to checkout后,就进入Checkout.ASPx,确认后进入OrderBilling.aspx,在这里可以修改你的信息,完成后点continue,会出现个人信息的只读页面,最终确认后就进入OrdERProcess.aspx,在这里是定单的详细情况,并且是只读的,到这里,定单被添加到数据库,购物完成。
Checkout.aspx把数据从Session中取出来,然后显示到页面,没什么好说的。
OrderBilling.aspx,这个页面一开始显示的信息可写,我们看OnLoad事件中,是用ProcessFlow.AccountController.GetAccountInfo获得用户的信息CreditCardInfo,然后显示在一些可写的控件中,比如用户控件:StaticAddress。当点击确认后,使用StoreCreditCard把刚才获得的用户信息保存到Sessin,准备呆会用。
OrderProcess.aspx是最终的定单生成页面。主要就是一个方法:
ProcessFlow.CartController.PurchaseCart 来看它的实现
public OrderInfo PurchaseCart(){

// Fetch the cart from session
Cart myCart = (Cart)HttpContext.Current.Session[CART_KEY];

// Make some checks on the cart
if ( ( myCart == null ) || ( myCart.Count==0 ) ) {

HttpContext.Current.Server.Transfer(URL_NOCART);
//HttpContext.Current.Response.Redirect(URL_NOCART, false);
return null;

}else{

// Build up the order
OrderInfo newOrder = new OrderInfo();
newOrder.UserId = ((AccountInfo)HttpContext.Current.Session[ACCOUNT_KEY]).UserId;
newOrder.CreditCard = (CreditCardInfo)HttpContext.Current.Session[CREDITCARD_KEY];
newOrder.BillingAddress = (AddressInfo)HttpContext.Current.Session[BILLING_KEY];
newOrder.ShippingAddress = (AddressInfo)HttpContext.Current.Session[SHIPPING_KEY];

newOrder.LineItems = (LineItemInfo[])myCart.GetOrderLineItems().ToArray(typeof(LineItemInfo));

newOrder.OrderTotal = myCart.Total;
newOrder.Date = DateTime.Now;

// Send the order to the middle tier
OrderInsert order = new OrderInsert();
//向数据库插入数据
newOrder.OrderId = order.Insert(newOrder);

// clear the session objects used
HttpContext.Current.Session[CART_KEY] = null;
HttpContext.Current.Session[CREDITCARD_KEY] = null;
HttpContext.Current.Session[BILLING_KEY] = null;
HttpContext.Current.Session[SHIPPING_KEY] = null;

return newOrder;
}
}

Order主要是由保存在Session里的值形成,其中包括购物车。
在Order有一个LineItemInfo,它是由Cart.GetOrderLineItems方法依据cart里CartItemInfo的值返回的,是定单的物品部分,和CartItemInfo相比,主要是多了一个Line属性,这个Line是用来表示物品在定单内的序号。
下面是Insert的实现。
public int Insert(OrderInfo order) {

// Get an instance of the Order DAL using the DALFactory
IOrder dal = PetShop.DALFactory.Order.Create();

// Call the insert method in the DAL to insert the header
int orderId = dal.Insert(order);

// Get an instance of the Inventory business component
Inventory inventory = new Inventory();
//向数据库插入库存信息
inventory.TakeStock( order.LineItems);

// As part of the sample application we have created a user
// you can tested distributed transactions with
// If the order has been created with the user 'Acid',
// then throw an exception which will rollback the entire transaction

if (order.UserId == ACID_USER_ID)
throw new ApplicationException(ACID_ERROR_MSG);

// Set the orderId so that it can be returned to the caller
return orderId;
}

相关文章推荐

《MQL4实用编程》读书笔记(5) - 交易操作的编程:修改定单(改仓)

《MQL4实用编程》读书笔记《MQL4实用编程》读书笔记(4) - 交易操作的编程:平仓和销仓(撤单)(4) - 交易操作的编程:平仓和销仓(撤单)...
  • lawme
  • lawme
  • 2014年04月14日 07:52
  • 3259

petshop3.0

  • 2007年05月19日 09:40
  • 771KB
  • 下载

PetShop 4.0学习--业务功能介绍

   Default.aspx页面列举了宠物商店的宠物类别,例如,BIRDS、BUGS、BACKYARD等。单击宠物类别,以便查看更为详细的信息。另 外,在页面右上角包括一个文本框和一个搜索图片...

PetShop 4.0学习--登录以及注册功能的分析

PetShop 4.0学习--登录以及注册功能的分析   先从PetShop 4.0的登录注册开始分析.在PetShop 4.0中并没有对登录以及注册进行编码,而是使用被称作ASP.NET 成员资格的...

petshop2-5合集

  • 2011年01月26日 12:03
  • 10.93MB
  • 下载

Petshop 4.0学习-MasterPage.master文件

http://xiaoruanjian.iteye.com/blog/881921 虽然母版页和内容页功能强大,但是其创建和应用过程并不复杂。本节和下一节将以创建如图1所示示例为例,向读...

从零开始学习制作H5应用——V3.0版,loading,背景音乐及自动切换

我们的第一个H5应用经过V1.0与V2.0的制作,已经越来越惊艳了,这一次,我们继续来给她梳妆打扮,让她更漂亮。任务 1、加入页面加载完成前的loading动画,提升用户体验; 2、加入背景...

菜鸟的spring 3.0源码学习之旅(5)

今天天气大范围降温,或许对于南方还是阳春三月的气候,但是对于我们这里,就将要进入千里冰封万里雪飘的季节了,不仅如此,我柔弱的手机也禁不住这大范围的降温也因此进入了休眠状态 不过阵阵的寒意毅然挡不住我...

OpenCV3.0 Examples学习笔记(5)-distrans.cpp

这个系列的目的是通过对OpenCV示例,进一步了解OpenCV函数的使用,不涉及具体原理。 目录 简介 Example运行截图 Example分析 ...

SMP3.0学习笔记之十一 与第三方HTML5框架(例如Sencha Touch)集成

作者:穿行印象 http://blog.sina.com.cn/s/blog_7a9486880101qhoc.html 在SMP2.x中,HWC也可以与Sencha Touch HTML...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习PetShop3.0(5)生成定单
举报原因:
原因补充:

(最多只允许输入30个字)