示例#1
0
        /// <summary>
        /// 将订单保存到数据库
        /// </summary>
        /// <param name="tenantID"></param>
        /// <param name="db"></param>
        /// <param name="oid"></param>
        public void Save(Guid tenantID, Zippy.Data.IDalProvider db, long?oid)
        {
            long orderID = 0;

            Z10Order.Total    = Items.Sum(s => s.Total);
            Z10Order.TenantID = tenantID;
            try
            {
                // 此处应该加入事务
                db.BeginTransaction();
                if (Z10Order.OrderID.HasValue && Z10Order.OrderID > 0)
                {
                    orderID = Z10Order.OrderID.Value;
                    db.Update(Z10Order);
                }
                else
                {
                    orderID = db.Insert(Z10Order);

                    Z10Order zorder = new Z10Order();

                    if (!oid.HasValue)
                    {
                        zorder.OrderID = orderID;
                        zorder.OriID   = orderID;
                    }
                    else
                    {
                        zorder.OriID = oid;
                    }

                    //zorder.FeeShould = this.CalFeeShould();

                    db.Update(zorder);
                }

                foreach (Z10OrderItem item in Items)
                {
                    item.ItemStatus = 1;
                    item.TenantID   = tenantID;
                    item.Total      = (item.Price ?? 0) * (item.CountShould ?? 0);
                    if (item.ItemID.HasValue && item.ItemID > 0 && item.OrderID == orderID)
                    {
                        db.Update(item);
                    }
                    else
                    {
                        item.OrderID = orderID;
                        var itemID = db.Insert(item);
                        item.ItemID = itemID;
                    }
                }

                Z10Order.OrderID = orderID;
                db.Commit();
            }
            catch (Exception ex)
            {
                db.RollbackTransaction();
                throw ex;
            }
        }