示例#1
0
        //==========================================================



        //==========================================================
        // GET: Order
        public ActionResult Index()
        {
            string currentUserId = HttpContext.User.Identity.GetUserId();
            ApplicationUserManager userManager = new ApplicationUserManager(new UserStore <ApplicationUser>(db));
            ApplicationUser        currentUser = userManager.FindById(currentUserId);

            if (!currentUser.EmailConfirmed)
            {
                return(RedirectToAction("Index", "Profile"));
            }

            ShoppingCart cart = db.ShoppingCarts
                                .Include(c => c.ShoppingCartsProducts)
                                .Where(c => c.UserId == currentUser.Id).SingleOrDefault();

            if (cart != null && cart.ShoppingCartsProducts != null && cart.ShoppingCartsProducts.Count > 0)
            {
                ShopOrder order = new ShopOrder
                {
                    DateCreate      = DateTime.Now,
                    ApplicationUser = currentUser
                };

                foreach (ShoppingCartsProduct cartProduct in cart.ShoppingCartsProducts)
                {
                    ShopOrderProduct orderProduct = new ShopOrderProduct
                    {
                        Quantity    = cartProduct.Quantity,
                        ShopProduct = cartProduct.ShopProduct
                    };

                    ShopProductsPrice price = db.ShopProductsPrices.Where(p => p.ShopProduct.Id == cartProduct.ShopProduct.Id && p.CurrentPrice).SingleOrDefault();
                    //cartProduct.ShopProduct.ShopProductsPrices.Where(p => p.CurrentPrice).SingleOrDefault();
                    if (price != null)
                    {
                        orderProduct.Price = price.Price;
                    }

                    order.ShopOrderProducts.Add(orderProduct);
                }

                db.ShopOrders.Add(order);
                db.ShoppingCartsProducts.RemoveRange(cart.ShoppingCartsProducts);
                db.SaveChanges();

                return(View("Index"));
            }
            return(View("Error"));
        }
示例#2
0
 public static string GetProductShopping(ShopOrderProduct model, ShopProduct product)
 {
     return($"<span class='price' id='prodCash'>{model.MoneyShopping}</span>积分; 运费:<span class='price' id='prodCash'>{product.Postage}</span>积分");
 }
示例#3
0
 public static string GetProductXianJin1(ShopOrderProduct model, ShopProduct product)
 {
     return($"<span class='price' id='prodCash'>{model.MoneyScore}</span>元; 运费:<span class='price' id='prodCash'>{product.Postage}</span>元");
 }
示例#4
0
        public ActionResult Save(ShopOneBuy entity)
        {
            var json = new JsonHelp();

            try
            {
                if (entity.ID == 0)
                {
                    json.IsSuccess = DB.ShopOneBuy.Insert(entity);
                    json.Msg       = "添加";
                }
                else
                {
                    var model = DB.ShopOneBuy.FindEntity(entity.ID);

                    #region 赋值
                    model.TotalCount = entity.TotalCount;
                    model.PayWay     = entity.PayWay;
                    model.CreateTime = entity.CreateTime;
                    model.IsEnable   = entity.IsEnable;
                    model.MemberCode = entity.MemberCode;
                    #endregion

                    #region 检验
                    if (model.TotalCount < model.Count)
                    {
                        json.Msg = "总需人次不能小于已参与人次!";
                        return(Json(json));
                    }
                    if (model.IsEnable == false && model.Count > 0)
                    {
                        json.Msg = "一元购正在进行中,不能停用";
                        return(Json(json));
                    }
                    if (model.State == ShopEnum.OneBuyState.End.GetHashCode())
                    {
                        json.Msg = "一元购已结束,不能修改";
                        return(Json(json));
                    }
                    #endregion

                    using (var tran = DB.ShopOneBuy.BeginTransaction)
                    {
                        if (model.Count > 0)
                        {
                            if (model.State == ShopEnum.OneBuyState.Start.GetHashCode())
                            {
                                //当总需人次与已参与人次相同时
                                if (model.Count >= model.TotalCount)
                                {
                                    model.IsFinish   = true;
                                    model.FinishTime = DateTime.Now;
                                    model.State      = ShopEnum.OneBuyState.Finish.GetHashCode();
                                }
                            }
                            else
                            {
                                var member = DB.Member_Info.FindEntity(a => a.Code == entity.MemberCode);
                                if (member != null)
                                {
                                    //设置获奖人
                                    model.NickName = member.NickName;
                                    model.Winner   = member.MemberId;
                                    model.WinTime  = DateTime.Now;
                                    model.State    = ShopEnum.OneBuyState.End.GetHashCode();

                                    #region 添加中奖订单
                                    var product = DB.ShopProduct.FindEntity(a => a.ID == model.ProductID);
                                    var order   = new ShopOrder()
                                    {
                                        GUID        = Guid.NewGuid().ToString().Replace("-", ""),
                                        MemberCode  = member.Code,
                                        NickName    = member.NickName,
                                        MemberID    = member.MemberId,
                                        OrderCode   = model.Code + DB.Random.Next(100, 999),
                                        OrderType   = "一元购",
                                        PayState    = ShopEnum.OrderPayState.Pay.GetHashCode(),
                                        PayTime     = DateTime.Now,
                                        SubmitTime  = DateTime.Now,
                                        RealAmount  = model.TotalCount,
                                        ShopID      = product.ShopID,
                                        State       = ShopEnum.OrderState.Pay.GetHashCode(),
                                        TotalAmount = model.TotalCount
                                    };
                                    if (model.PayWay != null)
                                    {
                                        order.PayWay = DB.ShopPayWay.FindEntity(model.PayWay).PayWay;
                                    }
                                    else
                                    {
                                        order.PayWay = "电子币";
                                    }
                                    //默认的我的地址
                                    var myaddress = DB.ShopMyAddress.Where(a => a.MemberID == member.MemberId).OrderByDescending(a => a.IsDefault).FirstOrDefault();
                                    if (myaddress != null)
                                    {
                                        order.Receiver    = myaddress.Name;
                                        order.PostAddress = myaddress.Address;
                                        order.Tel         = myaddress.Tel;
                                    }
                                    model.OrderID  = order.GUID;
                                    json.IsSuccess = DB.ShopOrder.Insert(order);
                                    if (json.IsSuccess == false)
                                    {
                                        json.Msg = "生成订单失败,请重试";
                                        return(Json(json));
                                    }
                                    #region 添加 商品订单对应
                                    var orderproduct = new ShopOrderProduct()
                                    {
                                        Count     = 1,
                                        MemberID  = member.MemberId,
                                        Money     = model.TotalCount,
                                        Name      = product.Title,
                                        ProductID = model.ProductID,
                                        Price     = model.TotalCount,
                                        OrderID   = order.GUID
                                    };
                                    json.IsSuccess = DB.ShopOrderProduct.Insert(orderproduct);
                                    if (json.IsSuccess == false)
                                    {
                                        json.Msg = "生成订单失败,请重试";
                                        return(Json(json));
                                    }
                                    #endregion
                                    #endregion
                                }
                            }
                        }
                        json.IsSuccess = DB.ShopOneBuy.Update(model);
                        json.Msg       = "修改";
                        tran.Complete();
                    }
                }
                if (json.IsSuccess)
                {
                    json.ReUrl = ControllerPath + "/Index";
                    json.Msg  += "成功";
                }
                else
                {
                    json.Msg += "失败";
                }
            }
            catch (Exception e)
            {
                json.IsSuccess = false;
                json.Msg       = "操作失败";
                LogHelper.Error("保存一元购失败:" + WebTools.getFinalException(e));
            }
            return(Json(json));
        }
示例#5
0
        /// <summary>
        /// 生成订单,进入代付款状态
        /// </summary>
        /// <returns></returns>
        public bool GenerateOrder(Member_Info curUser, int AddressID, string remark)
        {
            //1.获取购物车
            List <ShopCat> catList = DB.ShopCat.Where(q => q.MemberID == curUser.MemberId).ToList();
            var            member  = DB.Member_Info.Where(p => p.MemberId == curUser.MemberId).FirstOrDefault();
            var            Level   = DB.Sys_Level.Where(p => p.LevelId == member.MemberLevelId).FirstOrDefault();

            using (var tran = BeginTransaction)
            {
                try
                {
                    //获取地址
                    ShopMyAddress address = DB.ShopMyAddress.FindEntity(q => q.ID == AddressID);

                    //2. 生成订单
                    ShopOrder order   = new ShopOrder();
                    string    orderID = Guid.NewGuid().ToString().Replace("-", "");
                    order.GUID       = orderID;
                    order.ShopID     = 1;
                    order.TraceNo    = orderID;
                    order.OrderCode  = generateCode();
                    order.MemberID   = curUser.MemberId;
                    order.MemberCode = curUser.Code;
                    order.NickName   = curUser.NickName;
                    order.PayState   = ShopEnum.OrderPayState.WaitPay.GetHashCode();
                    order.State      = ShopEnum.OrderState.Submit.GetHashCode();
                    order.SubmitTime = DateTime.Now;
                    order.Remark     = remark;

                    if (address != null)
                    {
                        order.Receiver    = address.Name;
                        order.PostAddress = address.ShowAddressName;
                        order.Tel         = address.Tel;
                        order.Type        = address.ShowAddressId;
                    }
                    foreach (var item in catList)
                    {
                        //if (member.MemberLevelId < 1)
                        //{
                        //    if (item.ShopProduct.CategoryID1 != 8)
                        //        throw new Exception("您不是会员无法去购买其他专区");
                        //}

                        int shopID = item.ShopProduct.ShopID;

                        order.PayWay = "";
                        //if (catList.Count > 1 && item.ShopProduct.IsDingDan())
                        //    throw new Exception("订单产品必须单独结算,请移除后提交");

                        //decimal totalPrice = 0;
                        decimal totalShopping = 0;
                        decimal totalScore    = 0;
                        decimal totalCongXiao = 0;
                        //3.统计价格
                        var catItem = item;


                        totalShopping += DB.ShopProduct.GetSPrice(catItem.ShopProduct, catItem.GuiGe).LingShou.Value *catItem.Count; //零售价
                        totalScore    += DB.ShopProduct.GetSPrice(catItem.ShopProduct, catItem.GuiGe).YouHui.Value *catItem.Count;   //优惠价
                        totalCongXiao += DB.ShopProduct.GetSPrice(catItem.ShopProduct, catItem.GuiGe).PeiHuo.Value *catItem.Count;   //配货价

                        order.ShopID      = shopID;
                        order.Postage     = 0;
                        order.RealAmount += totalScore;//优惠价
                        if (catItem.ShopProduct.CategoryID1 == DB.XmlConfig.XmlSite.Scores)
                        {
                            order.OrderType = "团购订单";
                        }
                        else
                        {
                            order.OrderType = "报单订单";
                        }
                        order.StoreCode     = "未发放";
                        order.RealShopping += totalScore; //零售价
                        order.RealScore    += totalScore; //优惠价

                        order.Postage += catItem.ShopProduct.Postage;

                        order.RealCongXiao += totalCongXiao; //pv
                        order.ZongDay       = catItem.Count; //挂卖总数量
                        order.YiDay         = catItem.Count; //剩余数量
                        order.Count        += catItem.Count;
                    }
                    if (order.RealAmount >= DB.XmlConfig.XmlSite.MinAmountHuZ)
                    {
                        order.Postage = 0;
                    }

                    if (DB.ShopOrder.Insert(order) == false)
                    {
                        throw new Exception("添加订单失败");
                    }

                    //生成订单关联
                    foreach (var item in catList)
                    {
                        var catItem = item;
                        var gg      = DB.ShopProduct.GetSPrice(catItem.ShopProduct, catItem.GuiGe);

                        ShopOrderProduct orderProduct = new ShopOrderProduct();
                        orderProduct.OrderID       = orderID;
                        orderProduct.ProductID     = catItem.ProductID;
                        orderProduct.Name          = catItem.ShopProduct.Title;
                        orderProduct.Count         = catItem.Count;
                        orderProduct.PriceShopping = gg.LingShou.Value; //零售
                        orderProduct.PriceScore    = gg.YouHui.Value;   //优惠
                        orderProduct.PriceCongXiao = gg.PeiHuo.Value;   //pv

                        orderProduct.MoneyShopping = orderProduct.PriceShopping * catItem.Count;
                        orderProduct.MoneyScore    = orderProduct.PriceScore * catItem.Count;
                        orderProduct.MoneyCongXiao = orderProduct.PriceCongXiao * catItem.Count;

                        orderProduct.Price = gg.YouHui.Value;

                        orderProduct.Money += orderProduct.MoneyScore;//配货价

                        orderProduct.GuiGe = catItem.GuiGe;
                        DB.ShopOrderProduct.Insert(orderProduct);

                        ////扣除订单的销售量
                        //catItem.ShopProduct.Sales += orderProduct.Count;
                        //catItem.ShopProduct.Inventory -= orderProduct.Count;
                        //if (catItem.ShopProduct.Inventory < 0)
                        //    throw new Exception("库存不足");
                        //DB.ShopProduct.Update(catItem.ShopProduct);

                        gg.KuCun  -= orderProduct.Count;
                        gg.YiShou += orderProduct.Count;
                        DB.GuiGeProduct_Info.Update(gg);
                    }



                    //4.清空购物车
                    DB.ShopCat.Delete(catList);
                    tran.Complete();
                    return(true);
                }
                catch (Exception ex)
                {
                    DB.Rollback();
                    throw ex;
                }
            }
        }