/// <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)); }