Esempio n. 1
0
        /// <summary>
        /// 下单
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public MobileOrderOutput PlaceAnOrder(MobileOrderBindModel model)
        {
            using (var db = base.NewDB())
            {
                MobileOrderOutput output = new MobileOrderOutput();//返回模型
                var commoditys           = db.Commoditys.Where(c => c.Status == (int)EnumStatus.架 && c.Delflag == (int)EnumDelflag.正常).ToList();
                var user = db.Users.Find(model.BuyerId);
                output.Errors = CheckOrder(model.Olist, commoditys);//校验订单
                if (output.Valid)
                {
                    Order order = new Order
                    {
                        Id              = Guid.NewGuid(),
                        BuyId           = model.BuyerId,
                        DistributorId   = model.DistributorId,
                        OrderStatus     = (int)EnumOrderStatus.已下单,
                        OrderTime       = DateTime.Now,
                        CreatedTime     = DateTime.Now,
                        Remark          = model.Remark,
                        OrderNum        = new OrderHelper().GetOnlyOrderNum(),
                        PhoneNum        = user.PhoneNum,
                        BuyerName       = user.NickName,
                        DeliveryAddress = db.Distributors.Find(model.DistributorId).DistributorAddress,
                        OrderDetails    = new List <OrderDetail>(),//初始化
                        LastUpdatedTime = DateTime.Now,
                    };
                    foreach (var item in model.Olist)//减少库存,并添加orderdetail明细
                    {
                        var entity = commoditys.FirstOrDefault(c => c.Id == item.CommodityId);

                        if (entity != null)
                        {
                            entity.Stock           = entity.Stock - item.Count;
                            entity.LastUpdatedTime = DateTime.Now;
                            item.Id          = Guid.NewGuid();
                            item.CDName      = entity.Name;
                            item.CDPicUrl    = entity.PicUrl;
                            item.CDPrice     = entity.Price;
                            item.CommodityId = entity.Id;
                            order.OrderDetails.Add(item);
                        }
                    }
                    order.Money = order.OrderDetails.Sum(c => c.Total);
                    db.Orders.Add(order);
                    if (db.SaveChanges() > 0)
                    {
                        output.Order = order.ToDto();
                    }
                    else//添加失败返回一条错误信息
                    {
                        output.Errors.Add(new OrderErrors {
                            ErrorType = (int)EnumErrorsType.系统错误, Message = "下单失败", Name = "order"
                        });
                    }
                }
                return(output);
            }
        }
        /// <summary>
        /// 下单
        /// </summary>
        /// <param name="bind"></param>
        /// <returns></returns>
        public ActionResult PlaceAnOrder(MobileOrderBindModel bind)
        {
            LayoutViewModel mode = new LayoutViewModel();

            bind.BuyerId = mode.GetSession().User.Id;
            var data = Ioc.Get <IMobileOrderService>().PlaceAnOrder(bind);

            return(Json(data, JsonRequestBehavior.AllowGet));
        }