예제 #1
0
        public ActionResult Detail(int?id, int?pid)
        {
            ShopOneBuy entity = null;

            ViewBag.List = DB.ShopPayWay.Where(a => true).OrderBy(a => a.ID).Select(a => new { a.ID, a.PayWay })
                           .ToList().Select(a => new KeyValuePair <int, string>(a.ID, a.PayWay)).ToList();
            if (id == null)
            {
                var ShopProduct = DB.ShopProduct.FindEntity(pid);
                if (ShopProduct != null)
                {
                    ViewBag.PName = ShopProduct.Title;
                }
                var qihao = DB.ShopOneBuy.Any() ? DB.ShopOneBuy.Where().Max(a => a.ID) : 0;
                entity = new ShopOneBuy()
                {
                    Code = "Y" + 1000000 + qihao, IsEnable = true, CreateTime = DateTime.Now, IsFinish = false, ProductID = pid.Value
                };
            }
            else
            {
                entity = DB.ShopOneBuy.FindEntity(id);
                var ShopProduct = DB.ShopProduct.FindEntity(entity.ProductID);
                if (ShopProduct != null)
                {
                    ViewBag.PName = ShopProduct.Title;
                }
            }

            return(View(entity));
        }
예제 #2
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));
        }
예제 #3
0
        /// <summary>
        /// 添加一元购记录
        /// </summary>
        /// <param name="ID"></param>
        /// <param name="Count"></param>
        /// <returns></returns>
        public JsonResult AddOneBuy(int ID, int Count)
        {
            try
            {
                Member_Info curUser = CurrentUser;
                ShopOneBuy  model   = DB.ShopOneBuy.FindEntity(q => q.ID == ID);
                //没人购买数量不能超过10%
                if (model.TotalCount > 10)
                {
                    //1.获取当前人的购买数量
                    int buyCount = DB.ShopOneBuyDetail.Where(q => q.MemberID == CurrentUser.MemberId && q.OneBuyID == ID).Select(q => q.Count)
                                   .ToList().Sum();
                    double max = model.TotalCount * 0.1;
                    if (buyCount > max)
                    {
                        throw new Exception("当前商品一个人最多购买总数的10%");
                    }
                }
                //1.数量验证
                int span = model.TotalCount - model.Count;
                if (Count > span)
                {
                    throw new Exception("购买数量超出");
                }
                if (curUser.Coins == null || curUser.Coins < Count)
                {
                    throw new Exception("余额不足");
                }
                //如果购买超过总数量标记已完成
                if ((model.Count + Count) >= model.TotalCount)
                {
                    model.State = ShopEnum.OneBuyState.Finish.GetHashCode();
                }

                //修改数量
                using (var tran = DB.ShopOneBuy.BeginTransaction)
                {
                    try
                    {
                        model.Count += Count;
                        DB.ShopOneBuy.Update(model);
                        //2.添加记录
                        ShopOneBuyDetail detail = new ShopOneBuyDetail();
                        detail.OneBuyID   = ID;
                        detail.Count      = Count;
                        detail.CreateTime = DateTime.Now;
                        detail.MemberID   = curUser.MemberId;
                        detail.MemberCode = curUser.Code;
                        detail.NickName   = curUser.NickName;

                        if (DB.ShopOneBuyDetail.Insert(detail))
                        {
                            //扣除用户的钱
                            curUser.Coins -= Count;
                            DB.Member_Info.Update(curUser);

                            tran.Complete();
                            return(Success("购买成功"));
                        }
                        return(Error("购买失败"));
                    }
                    catch (Exception ex)
                    {
                        DB.Rollback();
                        throw ex;
                    }
                }
            }
            catch (Exception ex)
            {
                return(Error(ex));
            }
        }