Beispiel #1
0
        private static string AddOrder(ShopCarViewModel shopCarViewModel)
        {
            string str     = "";
            var    db      = ConnHelper.CreateDb();
            Random random  = new Random();
            var    orderId = DateTime.Now.ToString("yyyyMMddHHmmssfff") + random.Next(0, 9);
            List <GoodsMessage> items;

            if (shopCarViewModel.CardInfo.Count == 0)
            {
                items = shopCarViewModel.TicketInfo;
                str   = "购买票";
            }
            else
            {
                items = shopCarViewModel.CardInfo;
                str   = "购买年卡";
            }
            foreach (var item in items)
            {
                if (item.SumCount == 0)
                {
                    continue;
                }
                var orderInfoEntity = new Order_Info();
                orderInfoEntity.ClassID    = item.ClassId;
                orderInfoEntity.Cred       = "身份证";
                orderInfoEntity.CredNo     = shopCarViewModel.UserInfo.UserCard;
                orderInfoEntity.Cren       = 0;
                orderInfoEntity.Email      = "";
                orderInfoEntity.Isfs       = 0;
                orderInfoEntity.IsLingPiao = 0;
                orderInfoEntity.Lren       = 0;
                orderInfoEntity.Mobile     = shopCarViewModel.UserInfo.Phone;
                orderInfoEntity.MunPrice   = item.SumPrice;
                orderInfoEntity.OrderID    = orderId;
                orderInfoEntity.RTime      = shopCarViewModel.UserInfo.GoDate.ToShortDateString();
                orderInfoEntity.Rtong      = item.SumCount;
                orderInfoEntity.State      = 0;
                orderInfoEntity.Ticket     = shopCarViewModel.UserInfo.Name;
                orderInfoEntity.Ticketer   = shopCarViewModel.UserInfo.Name;
                orderInfoEntity.Type       = 0;
                orderInfoEntity.AddTime    = DateTime.Now;
                orderInfoEntity.Detail     = "手机网站";
                orderInfoEntity.IsPost     = 0;
                orderInfoEntity.IsSMPost   = 0;
                db.Order_Info.Add(orderInfoEntity);
            }
            db.SaveChanges();
            LogHelper.CreateLog("游客开始在官方网站下订单->当前未支付!(" + str + ")", orderId.ToString());
            return(orderId.ToString());
        }
        /// <summary>
        /// 订单应答构造方法
        /// </summary>
        public OrderInfoResponse(Order_Info order, List <Tuple <string, string> > tuples)
        {
            //订单ID
            this.Id = order.Id;
            //用户id
            this.UserId = order.UserId;
            //收货人信息id
            this.AddressId = order.AddressId;
            //总价
            this.TotalPrice = order.TotalPrice;
            //支付方式
            this.PayType = order.PayType;
            //订单状态
            this.Freight = order.Freight == null ? "0" : order.Freight;
            //状态
            if (order.Status != null)
            {
                var tuple = tuples.Where(p => p.Item1 == order.Status.ToString()).FirstOrDefault();
                this.Status = tuple == null ? "店家暂时没有处理" : tuple.Item2;
            }

            //订单编号
            this.OrderNo = order.OrderNo;
            //订单时间
            this.OrderTime = order.OrderTime.Value.ToString("yyyy-MM-dd hh:mm:ss");
            //购买人名称
            this.BuyName = order.BuyName;
            //购买人电话
            this.Phone = order.Phone;
            //快递公司
            this.ExpressCompany = order.ExpressCompany;
            //快递No
            this.ExpressNo = order.ExpressNo;
            //地址详情
            this.Address = order.Address;
            //是否是erp订单
            this.IsErp = order.ToErp;
        }
Beispiel #3
0
        /// <summary>
        /// 数据条数
        /// </summary>
        /// <param name="model">模型</param>
        /// <param name="connection">连接</param>
        /// <param name="transaction">事务</param>
        /// <returns>对象列表</returns>
        public int SelectCount(Order_Info model = null, IDbConnection connection = null, IDbTransaction transaction = null)
        {
            var query = new LambdaQuery <Order_Info>();

            if (model != null)
            {
                if (!model.Id.IsNullOrEmpty())
                {
                    query.Where(p => p.Id == model.Id);
                }
                if (!model.UserId.IsNullOrEmpty())
                {
                    query.Where(p => p.UserId == model.UserId);
                }
                if (!model.AddressId.IsNullOrEmpty())
                {
                    query.Where(p => p.AddressId == model.AddressId);
                }
                if (!model.TotalPrice.IsNullOrEmpty())
                {
                    query.Where(p => p.TotalPrice == model.TotalPrice);
                }
                if (!model.DiscountPrice.IsNullOrEmpty())
                {
                    query.Where(p => p.DiscountPrice == model.DiscountPrice);
                }
                if (!model.DisCountResult.IsNullOrEmpty())
                {
                    query.Where(p => p.DisCountResult == model.DisCountResult);
                }
                if (!model.PayType.IsNullOrEmpty())
                {
                    query.Where(p => p.PayType == model.PayType);
                }
                if (!model.Status.IsNullOrEmpty())
                {
                    query.Where(p => p.Status == model.Status);
                }
                if (!model.OrderNo.IsNullOrEmpty())
                {
                    query.Where(p => p.OrderNo == model.OrderNo);
                }
                if (!model.OrderTime.IsNullOrEmpty())
                {
                    query.Where(p => p.OrderTime == model.OrderTime);
                }
                if (!model.OrderType.IsNullOrEmpty())
                {
                    query.Where(p => p.OrderType == model.OrderType);
                }
                if (!model.BuyName.IsNullOrEmpty())
                {
                    query.Where(p => p.BuyName == model.BuyName);
                }
                if (!model.Address.IsNullOrEmpty())
                {
                    query.Where(p => p.Address == model.Address);
                }
                if (!model.Phone.IsNullOrEmpty())
                {
                    query.Where(p => p.Phone == model.Phone);
                }
                if (!model.ExpressCompany.IsNullOrEmpty())
                {
                    query.Where(p => p.ExpressCompany == model.ExpressCompany);
                }
                if (!model.ExpressNo.IsNullOrEmpty())
                {
                    query.Where(p => p.ExpressNo == model.ExpressNo);
                }
                if (!model.Invoice.IsNullOrEmpty())
                {
                    query.Where(p => p.Invoice == model.Invoice);
                }
                if (!model.InvoiceId.IsNullOrEmpty())
                {
                    query.Where(p => p.InvoiceId == model.InvoiceId);
                }
                if (!model.LastCodeTime.IsNullOrEmpty())
                {
                    query.Where(p => p.LastCodeTime == model.LastCodeTime);
                }
                if (!model.WechatFaild.IsNullOrEmpty())
                {
                    query.Where(p => p.WechatFaild == model.WechatFaild);
                }
                if (!model.ToErp.IsNullOrEmpty())
                {
                    query.Where(p => p.ToErp == model.ToErp);
                }
                if (!model.IsDelete.IsNullOrEmpty())
                {
                    query.Where(p => p.IsDelete == model.IsDelete);
                }
                if (!model.Freight.IsNullOrEmpty())
                {
                    query.Where(p => p.Freight == model.Freight);
                }
                if (!model.UserDesign.IsNullOrEmpty())
                {
                    query.Where(p => p.UserDesign == model.UserDesign);
                }
                if (!model.IsAdmin.IsNullOrEmpty())
                {
                    query.Where(p => p.IsAdmin == model.IsAdmin);
                }
                if (!model.AdminName.IsNullOrEmpty())
                {
                    query.Where(p => p.AdminName == model.AdminName);
                }
                if (!model.WechatTime.IsNullOrEmpty())
                {
                    query.Where(p => p.WechatTime == model.WechatTime);
                }
            }
            return(query.GetQueryCount(connection, transaction));
        }
Beispiel #4
0
        /// <summary>
        /// 筛选全部数据
        /// </summary>
        /// <param name="model">模型</param>
        /// <param name="connection">连接</param>
        /// <param name="transaction">事务</param>
        /// <returns>对象列表</returns>
        public List <Order_Info> SelectAll(Order_Info model = null, string SelectFiled = null, IDbConnection connection = null, IDbTransaction transaction = null)
        {
            var query = new LambdaQuery <Order_Info>();

            if (model != null)
            {
                if (!model.Id.IsNullOrEmpty())
                {
                    query.Where(p => p.Id == model.Id);
                }
                if (!model.UserId.IsNullOrEmpty())
                {
                    query.Where(p => p.UserId == model.UserId);
                }
                if (!model.AddressId.IsNullOrEmpty())
                {
                    query.Where(p => p.AddressId == model.AddressId);
                }
                if (!model.TotalPrice.IsNullOrEmpty())
                {
                    query.Where(p => p.TotalPrice == model.TotalPrice);
                }
                if (!model.DiscountPrice.IsNullOrEmpty())
                {
                    query.Where(p => p.DiscountPrice == model.DiscountPrice);
                }
                if (!model.DisCountResult.IsNullOrEmpty())
                {
                    query.Where(p => p.DisCountResult == model.DisCountResult);
                }
                if (!model.PayType.IsNullOrEmpty())
                {
                    query.Where(p => p.PayType == model.PayType);
                }
                if (!model.Status.IsNullOrEmpty())
                {
                    query.Where(p => p.Status == model.Status);
                }
                if (!model.OrderNo.IsNullOrEmpty())
                {
                    query.Where(p => p.OrderNo == model.OrderNo);
                }
                if (!model.OrderTime.IsNullOrEmpty())
                {
                    query.Where(p => p.OrderTime == model.OrderTime);
                }
                if (!model.OrderType.IsNullOrEmpty())
                {
                    query.Where(p => p.OrderType == model.OrderType);
                }
                if (!model.BuyName.IsNullOrEmpty())
                {
                    query.Where(p => p.BuyName == model.BuyName);
                }
                if (!model.Address.IsNullOrEmpty())
                {
                    query.Where(p => p.Address == model.Address);
                }
                if (!model.Phone.IsNullOrEmpty())
                {
                    query.Where(p => p.Phone == model.Phone);
                }
                if (!model.ExpressCompany.IsNullOrEmpty())
                {
                    query.Where(p => p.ExpressCompany == model.ExpressCompany);
                }
                if (!model.ExpressNo.IsNullOrEmpty())
                {
                    query.Where(p => p.ExpressNo == model.ExpressNo);
                }
                if (!model.Invoice.IsNullOrEmpty())
                {
                    query.Where(p => p.Invoice == model.Invoice);
                }
                if (!model.InvoiceId.IsNullOrEmpty())
                {
                    query.Where(p => p.InvoiceId == model.InvoiceId);
                }
                if (!model.LastCodeTime.IsNullOrEmpty())
                {
                    query.Where(p => p.LastCodeTime == model.LastCodeTime);
                }
                if (!model.WechatFaild.IsNullOrEmpty())
                {
                    query.Where(p => p.WechatFaild == model.WechatFaild);
                }
                if (!model.ToErp.IsNullOrEmpty())
                {
                    query.Where(p => p.ToErp == model.ToErp);
                }
                if (!model.IsDelete.IsNullOrEmpty())
                {
                    query.Where(p => p.IsDelete == model.IsDelete);
                }
                if (!model.Freight.IsNullOrEmpty())
                {
                    query.Where(p => p.Freight == model.Freight);
                }
                if (!model.UserDesign.IsNullOrEmpty())
                {
                    query.Where(p => p.UserDesign == model.UserDesign);
                }
                if (!model.IsAdmin.IsNullOrEmpty())
                {
                    query.Where(p => p.IsAdmin == model.IsAdmin);
                }
                if (!model.AdminName.IsNullOrEmpty())
                {
                    query.Where(p => p.AdminName == model.AdminName);
                }
                if (!model.WechatTime.IsNullOrEmpty())
                {
                    query.Where(p => p.WechatTime == model.WechatTime);
                }
            }
            if (SelectFiled != null)
            {
                SelectFiled = SelectFiled.ToLowerInvariant();
                if (SelectFiled.Contains("id,"))
                {
                    query.Select(p => new { p.Id });
                }
                if (SelectFiled.Contains("userid,"))
                {
                    query.Select(p => new { p.UserId });
                }
                if (SelectFiled.Contains("addressid,"))
                {
                    query.Select(p => new { p.AddressId });
                }
                if (SelectFiled.Contains("totalprice,"))
                {
                    query.Select(p => new { p.TotalPrice });
                }
                if (SelectFiled.Contains("discountprice,"))
                {
                    query.Select(p => new { p.DiscountPrice });
                }
                if (SelectFiled.Contains("discountresult,"))
                {
                    query.Select(p => new { p.DisCountResult });
                }
                if (SelectFiled.Contains("paytype,"))
                {
                    query.Select(p => new { p.PayType });
                }
                if (SelectFiled.Contains("status,"))
                {
                    query.Select(p => new { p.Status });
                }
                if (SelectFiled.Contains("orderno,"))
                {
                    query.Select(p => new { p.OrderNo });
                }
                if (SelectFiled.Contains("ordertime,"))
                {
                    query.Select(p => new { p.OrderTime });
                }
                if (SelectFiled.Contains("ordertype,"))
                {
                    query.Select(p => new { p.OrderType });
                }
                if (SelectFiled.Contains("buyname,"))
                {
                    query.Select(p => new { p.BuyName });
                }
                if (SelectFiled.Contains("address,"))
                {
                    query.Select(p => new { p.Address });
                }
                if (SelectFiled.Contains("phone,"))
                {
                    query.Select(p => new { p.Phone });
                }
                if (SelectFiled.Contains("expresscompany,"))
                {
                    query.Select(p => new { p.ExpressCompany });
                }
                if (SelectFiled.Contains("expressno,"))
                {
                    query.Select(p => new { p.ExpressNo });
                }
                if (SelectFiled.Contains("invoice,"))
                {
                    query.Select(p => new { p.Invoice });
                }
                if (SelectFiled.Contains("invoiceid,"))
                {
                    query.Select(p => new { p.InvoiceId });
                }
                if (SelectFiled.Contains("lastcodetime,"))
                {
                    query.Select(p => new { p.LastCodeTime });
                }
                if (SelectFiled.Contains("wechatfaild,"))
                {
                    query.Select(p => new { p.WechatFaild });
                }
                if (SelectFiled.Contains("toerp,"))
                {
                    query.Select(p => new { p.ToErp });
                }
                if (SelectFiled.Contains("isdelete,"))
                {
                    query.Select(p => new { p.IsDelete });
                }
                if (SelectFiled.Contains("freight,"))
                {
                    query.Select(p => new { p.Freight });
                }
                if (SelectFiled.Contains("userdesign,"))
                {
                    query.Select(p => new { p.UserDesign });
                }
                if (SelectFiled.Contains("isadmin,"))
                {
                    query.Select(p => new { p.IsAdmin });
                }
                if (SelectFiled.Contains("adminname,"))
                {
                    query.Select(p => new { p.AdminName });
                }
                if (SelectFiled.Contains("wechattime,"))
                {
                    query.Select(p => new { p.WechatTime });
                }
            }
            return(query.GetQueryList(connection, transaction));
        }
Beispiel #5
0
 public bool UpdateOrderStatus(Order_Info ord)
 {
     return(Order_InfoOper.Instance.Update(ord));
 }
Beispiel #6
0
 /// <summary>
 /// 更新模型
 /// </summary>
 /// <param name="model">订单模型</param>
 /// <returns></returns>
 public bool UpdateModel(Order_Info model)
 {
     return(Order_InfoOper.Instance.Update(model));
 }
Beispiel #7
0
        /// <summary>
        /// 后台订单创建
        /// </summary>
        /// <param name="orderType">订单类型:是否为PC订单</param>
        /// <param name="address">地址</param>
        /// <param name="name">用户名称</param>
        /// <param name="Phone">用户电话</param>
        /// <param name="invoice">发票信息</param>
        /// <param name="commId">商品id</param>
        /// <param name="PrintingMethod">印刷方式</param>
        /// <param name="AmountNum">数目</param>
        /// <param name="ColorId">颜色Id</param>
        /// <returns></returns>
        public bool CreateAdminOrder(int orderType, string address, string name, string Phone, string invoice, int commId, string PrintingMethod, int?AmountNum, int ColorId, string ErpUserName)
        {
            var MysqlHelper = SqlHelper.GetMySqlHelper("transaction");
            var connection  = MysqlHelper.CreatConn();
            var transaction = MysqlHelper.GetTransaction();

            try
            {
                #region  单
                var orderNo = DateTime.Now.ToString("yyMMdd") + (TodayorderOper.Instance.SelectAll(null, null, connection, transaction).FirstOrDefault().OrderCount + 1).ToString("000");

                #region 订单信息处理
                Order_Info info = new Order_Info
                {
                    Address      = address,
                    OrderNo      = orderNo,
                    OrderTime    = DateTime.Now,
                    OrderType    = orderType,
                    PayType      = 1,
                    Status       = 1,
                    UserId       = 0,
                    BuyName      = name,
                    Phone        = Phone.Trim(),
                    Invoice      = invoice,
                    LastCodeTime = DateTime.Now,
                    IsAdmin      = true,
                    AdminName    = ErpUserName
                };

                #endregion

                #region 订单明细处理
                #region 判断商品是否存在
                var commdity = CommodityOper.Instance.SelectById(commId, connection, transaction);
                if (commdity == null)
                {
                    transaction.Rollback();
                    connection.Close();
                    return(false);
                }
                #endregion

                var commdityList = new List <int?>();
                commdityList.Add(commdity.Id);
                var MaterialIdList = new List <string>();
                MaterialIdList.Add(commdity.MaterialId.Value.ToString());
                var StockList   = Materials_Stock_ViewOper.Instance.SelectByKeys("Raw_materialsId", MaterialIdList, connection, transaction);
                var materials   = Raw_MaterialsOper.Instance.SelectById(commdity.MaterialId.Value, connection, transaction);
                var StorageList = StorageOper.Instance.SelectByKeys("Raw_materialsId", MaterialIdList, connection, transaction);
                var list        = CommodityPriceFunc.Instance.SelectByIds(commdityList);
                List <Order_Detail> listDetail = new List <Order_Detail>();
                var priceArray = new List <Tuple <int?, decimal?> >();
                #region 获取商品价格
                if (materials.SalesInfoList == null)
                {
                    var priceItemList = list.Where(p => p.CommodityId == commdity.Id).OrderByDescending(p => p.StageAmount);
                    foreach (var priceitem in priceItemList)
                    {
                        priceArray.Add(new Tuple <int?, decimal?>(item1: priceitem.StageAmount, item2: priceitem.StagePrice));
                    }
                }
                else
                {
                    var saleinfo = materials.SalesInfoList.Split(';').Where(p => !string.IsNullOrEmpty(p)).ToList();
                    foreach (var saleitem in saleinfo)
                    {
                        var saledetailInfo = saleitem.Split('|').Where(p => !string.IsNullOrEmpty(p)).ToList();
                        if (PrintingMethod == "PrintFunc2")
                        {
                            priceArray.Add(new Tuple <int?, decimal?>(item1: saledetailInfo[0].ParseInt(), item2: saledetailInfo[2].ParseDecimal()));
                        }
                        else if (PrintingMethod == "PrintFunc3")
                        {
                            priceArray.Add(new Tuple <int?, decimal?>(item1: saledetailInfo[0].ParseInt(), item2: saledetailInfo[3].ParseDecimal()));
                        }
                        else
                        {
                            priceArray.Add(new Tuple <int?, decimal?>(item1: saledetailInfo[0].ParseInt(), item2: saledetailInfo[1].ParseDecimal()));
                        }
                    }
                    var priceInfo = list.Where(p => p.StageAmount == 0).FirstOrDefault();
                    if (priceInfo != null)
                    {
                        priceArray.Add(new Tuple <int?, decimal?>(item1: 0, item2: priceInfo.StagePrice));
                    }
                }
                var price = priceArray.Where(p => p.Item1 < AmountNum).OrderByDescending(p => p.Item1).FirstOrDefault();
                #endregion

                #region 判断库存是否足够
                var Stock = StockList.Where(p => p.ColorId == ColorId).FirstOrDefault();
                if (Stock == null || (Stock.available_stock == null ? 0 : Stock.available_stock) < AmountNum)
                {
                    transaction.Rollback();
                    connection.Close();
                    return(false);
                }
                var ThisStorageList = StorageList.Where(p => p.Color == Stock.SKU).ToList();
                #region 修改库存数量
                var Amount = AmountNum;
                foreach (var Storage in ThisStorageList)
                {
                    if (Storage.stock > Storage.freeze_stock)
                    {
                        if ((Amount + Storage.freeze_stock) < Storage.stock)
                        {
                            Storage.freeze_stock = Storage.freeze_stock + Amount;
                            Amount = 0;
                            if (!StorageOper.Instance.Update(Storage, connection, transaction))
                            {
                                transaction.Rollback();
                                connection.Close();
                                return(false);
                            }
                            break;
                        }
                        else
                        {
                            Amount = Amount - Storage.stock + Storage.freeze_stock;
                            Storage.freeze_stock = Storage.stock;
                            if (!StorageOper.Instance.Update(Storage, connection, transaction))
                            {
                                transaction.Rollback();
                                connection.Close();
                                return(false);
                            }
                        }
                    }
                }
                #endregion
                #endregion

                if (price != null && AmountNum != null)
                {
                    decimal?payMoney = 0;
                    payMoney = AmountNum * price.Item2.Value;
                    Order_Detail detail = new Order_Detail
                    {
                        Color          = ColorId,
                        CommodityId    = commId,
                        Amount         = AmountNum,
                        PayMoney       = payMoney,
                        PrintingMethod = PrintingMethod
                    };
                    listDetail.Add(detail);
                }
                else
                {
                    transaction.Rollback();
                    connection.Close();
                    return(false);
                }

                #endregion

                #region 添加方法
                info.TotalPrice = listDetail.Sum(p => p.PayMoney);
                if (info.TotalPrice < 10)
                {
                    info.TotalPrice = 10;
                    info.Freight    = "10";
                }
                else if (info.TotalPrice > 10 && info.TotalPrice < 100)
                {
                    info.TotalPrice = info.TotalPrice + 10;
                    info.Freight    = "10";
                }
                var OrderKey = Order_InfoOper.Instance.InsertReturnKey(info, connection, transaction);
                if (OrderKey <= 0)
                {
                    transaction.Rollback();
                    connection.Close();
                    return(false);
                }
                info.Id = OrderKey;
                if (listDetail.Count == 0)
                {
                    transaction.Rollback();
                    connection.Close();
                    return(false);
                }
                foreach (var item in listDetail)
                {
                    item.OrderId = OrderKey;
                    if (!Order_DetailOper.Instance.Insert(item, connection, transaction))
                    {
                        transaction.Rollback();
                        connection.Close();
                        return(false);
                    }
                }
                #endregion

                #endregion
                transaction.Commit();
                connection.Close();
                return(true);
            }
            catch (Exception e)
            {
                transaction.Rollback();
                connection.Close();
                return(false);
            }
        }
Beispiel #8
0
        /// <summary>
        /// 创建订单
        /// </summary>
        /// <param name="Address">地址</param>
        /// <param name="userId">用户ID</param>
        /// <param name="ShopCartIds">购物车列表</param>
        /// <param name="UserDecount">用户折扣</param>
        /// <param name="connection">链接</param>
        /// <param name="transaction">事务</param>
        /// <returns></returns>
        private Tuple <Order_Info, string> CreateOrder(int orderType, string Address, int userId, string ShopCartIds, decimal UserDecount, IDbConnection connection, IDbTransaction transaction, int PayType, string name, string Phone, string Invoice)
        {
            var orderNo = DateTime.Now.ToString("yyMMdd") + (TodayorderOper.Instance.SelectAll(null, null, connection, transaction).FirstOrDefault().OrderCount + 1).ToString("000");

            #region 地址添加
            //地址分割
            //var ArrayAddress = Address.Split(' ').Where(p => !p.IsNullOrEmpty()).ToList();
            //Address addr = new Address
            //{
            //    UserId = userId,
            //    AddrArea = $"{ArrayAddress[0]},{ArrayAddress[1]},{ArrayAddress[2]}",
            //    AddrDetail = ArrayAddress[3],
            //    ContactName = name,
            //    ContactPhone = Phone
            //};
            //if (AddressFunc.Instance.SelectAll(addr).Count == 0)
            //{
            //    if (AddressFunc.Instance.AdressAdd(addr) <= 0)
            //    {
            //        return new Tuple<Order_Info, string>(null, "地址添加失败!");
            //    }
            //}
            #endregion

            #region 订单信息处理
            Order_Info info = new Order_Info
            {
                Address      = Address,
                OrderNo      = orderNo,
                OrderTime    = DateTime.Now,
                OrderType    = orderType,
                PayType      = PayType,
                Status       = 1,
                UserId       = userId,
                BuyName      = name,
                Phone        = Phone.Trim(),
                Invoice      = Invoice,
                InvoiceId    = Invoice.ParseInt(),
                LastCodeTime = DateTime.Now
            };

            #endregion

            #region 订单明细处理
            var listCart      = ShopcartOper.Instance.SelectByIds(ShopCartIds.Split(',').ToList(), connection, transaction);
            var CommdityList  = CommodityOper.Instance.SelectByKeys("id", listCart.Where(q => q != null).Select(p => p.CommodityId.Value.ToString()).ToList(), connection, transaction);
            var StockList     = Materials_Stock_ViewOper.Instance.SelectByKeys("Raw_materialsId", CommdityList.Where(q => q.MaterialId != null).Select(p => p.MaterialId.Value.ToString()).ToList(), connection, transaction);
            var MaterialsList = Raw_MaterialsOper.Instance.SelectByKeys("Id", CommdityList.Where(q => q.MaterialId != null).Select(p => p.MaterialId.Value.ToString()).ToList(), connection, transaction);
            var StorageList   = StorageOper.Instance.SelectByKeys("Raw_materialsId", CommdityList.Where(q => q.MaterialId != null).Select(p => p.MaterialId.Value.ToString()).ToList(), connection, transaction);
            var list          = CommodityPriceFunc.Instance.SelectByIds(listCart.Select(p => p.CommodityId).ToList());
            List <Order_Detail> listDetail = new List <Order_Detail>();
            foreach (var item in listCart)
            {
                var commdity   = CommdityList.Where(p => p.Id == item.CommodityId).FirstOrDefault();
                var materials  = MaterialsList.Where(p => p.Id == commdity.MaterialId).FirstOrDefault();
                var priceArray = new List <Tuple <int?, decimal?> >();
                if (materials.SalesInfoList == null)
                {
                    var priceItemList = list.Where(p => p.CommodityId == commdity.Id).OrderByDescending(p => p.StageAmount);
                    foreach (var priceitem in priceItemList)
                    {
                        priceArray.Add(new Tuple <int?, decimal?>(item1: priceitem.StageAmount, item2: priceitem.StagePrice));
                    }
                }
                else
                {
                    var saleinfo = materials.SalesInfoList.Split(';').Where(p => !string.IsNullOrEmpty(p)).ToList();
                    foreach (var saleitem in saleinfo)
                    {
                        var saledetailInfo = saleitem.Split('|').Where(p => !string.IsNullOrEmpty(p)).ToList();
                        if (item.PrintingMethod == "PrintFunc2")
                        {
                            priceArray.Add(new Tuple <int?, decimal?>(item1: saledetailInfo[0].ParseInt(), item2: saledetailInfo[2].ParseDecimal()));
                        }
                        else if (item.PrintingMethod == "PrintFunc3")
                        {
                            priceArray.Add(new Tuple <int?, decimal?>(item1: saledetailInfo[0].ParseInt(), item2: saledetailInfo[3].ParseDecimal()));
                        }
                        else
                        {
                            priceArray.Add(new Tuple <int?, decimal?>(item1: saledetailInfo[0].ParseInt(), item2: saledetailInfo[1].ParseDecimal()));
                        }
                    }
                    var priceInfo = list.Where(p => p.StageAmount == 0).FirstOrDefault();
                    if (priceInfo != null)
                    {
                        priceArray.Add(new Tuple <int?, decimal?>(item1: 0, item2: priceInfo.StagePrice));
                    }
                }
                var price = priceArray.Where(p => p.Item1 < item.Amount).OrderByDescending(p => p.Item1).FirstOrDefault();

                #region 判断商品是否存在
                var Commdity = CommdityList.Where(p => p.Id == item.CommodityId).FirstOrDefault();
                if (Commdity == null)
                {
                    return(new Tuple <Order_Info, string>(null, "商品不存在!"));
                }
                #endregion
                #region 判断库存是否足够
                var Stock = StockList.Where(p => p.Raw_materialsId == Commdity.MaterialId && p.ColorName == item.Color).FirstOrDefault();
                if (Stock == null || (Stock.available_stock == null ? 0 : Stock.available_stock) < item.Amount)
                {
                    return(new Tuple <Order_Info, string>(null, "库存不足,请联系客服!"));
                }
                var ThisStorageList = StorageList.Where(p => p.Raw_materialsId == Commdity.MaterialId && p.Color == Stock.SKU).ToList();
                #region 修改库存数量
                var Amount = item.Amount;
                foreach (var Storage in ThisStorageList)
                {
                    if (Storage.stock > Storage.freeze_stock)
                    {
                        if ((Amount + Storage.freeze_stock) < Storage.stock)
                        {
                            Storage.freeze_stock = Storage.freeze_stock + Amount;
                            Amount = 0;
                            if (!StorageOper.Instance.Update(Storage, connection, transaction))
                            {
                                return(new Tuple <Order_Info, string>(null, "库存更新失败!"));
                            }
                            break;
                        }
                        else
                        {
                            Amount = Amount - Storage.stock + Storage.freeze_stock;
                            Storage.freeze_stock = Storage.stock;
                            if (!StorageOper.Instance.Update(Storage, connection, transaction))
                            {
                                return(new Tuple <Order_Info, string>(null, "库存更新失败!"));
                            }
                        }
                    }
                }
                #endregion
                #endregion
                if (price != null && item.Amount != null)
                {
                    decimal?payMoney = 0;
                    payMoney = item.Amount * price.Item2.Value * UserDecount;
                    Order_Detail detail = new Order_Detail
                    {
                        Color          = ColorinfoFunc.Instance.GetColorID(item.Color).ParseInt(),
                        CommodityId    = item.CommodityId,
                        Amount         = item.Amount,
                        ShopCartId     = item.Id,
                        PayMoney       = payMoney,
                        PrintingMethod = item.PrintingMethod
                    };
                    listDetail.Add(detail);
                }
                else
                {
                    return(new Tuple <Order_Info, string>(null, "对不起,价格出现问题!"));
                }
            }

            #endregion

            #region 添加方法
            info.TotalPrice = listDetail.Sum(p => p.PayMoney);
            if (info.TotalPrice < 10)
            {
                info.TotalPrice = 10;
                info.Freight    = "10";
            }
            else if (info.TotalPrice > 10 && info.TotalPrice < 100)
            {
                info.TotalPrice = info.TotalPrice + 10;
                info.Freight    = "10";
            }
            var OrderKey = Order_InfoOper.Instance.InsertReturnKey(info, connection, transaction);
            if (OrderKey <= 0)
            {
                return(new Tuple <Order_Info, string>(null, "订单添加失败!"));
            }
            info.Id = OrderKey;
            if (listDetail.Count == 0)
            {
                return(new Tuple <Order_Info, string>(null, "至少要有一件商品!"));
            }
            foreach (var item in listDetail)
            {
                item.OrderId = OrderKey;
                if (!Order_DetailOper.Instance.Insert(item, connection, transaction))
                {
                    return(new Tuple <Order_Info, string>(null, "至少要有一件商品!"));
                }
            }
            #endregion

            #region  除购物车
            foreach (var item in listCart)
            {
                if (!ShopcartOper.Instance.DeleteById(item.Id, connection, transaction))
                {
                    return(new Tuple <Order_Info, string>(null, "购物车删除失败!"));
                }
            }
            #endregion

            return(new Tuple <Order_Info, string>(info, "成功!"));
        }
 /// <summary>
 /// 数据条数
 /// </summary>
 /// <param name="model">模型</param>
 /// <returns>对象列表</returns>
 public int SelectCount(Order_Info model)
 {
     return(Order_InfoOper.Instance.SelectCount(model));
 }
 /// <summary>
 /// 筛选全部数据
 /// </summary>
 /// <param name="model">模型</param>
 /// <returns>对象列表</returns>
 public List <Order_Info> SelectByModel(Order_Info model)
 {
     return(Order_InfoOper.Instance.SelectAll(model));
 }
 /// <summary>
 /// 根据模型插入
 /// </summary>
 /// <param name="model">模型</param>
 /// <returns>是否成功</returns>
 public int InsertReturnKey(Order_Info model)
 {
     return(Order_InfoOper.Instance.InsertReturnKey(model));
 }
 /// <summary>
 /// 根据模型插入
 /// </summary>
 /// <param name="model">模型</param>
 /// <returns>是否成功</returns>
 public bool Insert(Order_Info model)
 {
     return(Order_InfoOper.Instance.Insert(model));
 }
 /// <summary>
 /// 根据模型删除数据
 /// </summary>
 /// <param name="model">模型</param>
 /// <returns>是否成功</returns>
 public bool DeleteModel(Order_Info model)
 {
     return(Order_InfoOper.Instance.DeleteModel(model));
 }
 /// <summary>
 /// 根据分页筛选数据
 /// </summary>
 /// <param name="Key">主键</param>
 /// <param name="start">开始数据</param>
 /// <param name="PageSize">页面长度</param>
 /// <param name="desc">排序</param>
 /// <param name="model">对象</param>
 /// <returns>对象列表</returns>
 public List <Order_Info> SelectByPage(string Key, int start, int PageSize, bool desc, Order_Info model, string SelectFiled)
 {
     return(Order_InfoOper.Instance.SelectByPage(Key, start, PageSize, desc, model));
 }