Esempio n. 1
0
        private void ShowOrderInfo(string orderId)
        {
            GiftOrderBll   bll   = new GiftOrderBll();
            GiftOrderModel order = bll.GetModel(orderId, this.CurrentUser.UserId);

            if (order != null)
            {
                gvProducts.DataSource = bll.GetOrderItems(orderId);
                gvProducts.DataBind();
                gvActionLog.DataSource = bll.GetChangeLogs(orderId);
                gvActionLog.DataBind();

                lblOrderId.Text     = order.OrderId;
                lblUserId.Text      = order.UserId;
                lblOrderStatus.Text = order.OrderStatus.ToString();
                lblCreateTime.Text  = order.CreateTime.ToString("yyyy-MM-dd HH:mm");
                lblShipMethod.Text  = order.ShipMethod.ToString();
                lblAddress.Text     = order.RecieverProvince + order.RecieverCity + order.RecieverCounty + " " + order.AddressDetial;
                lblPostcode.Text    = order.Postalcode;
                lblUserNotes.Text   = order.UserNotes;
                lblTelePhone.Text   = order.RecieverPhone;
                lblReceName.Text    = order.RecieverName;
                lblEmail.Text       = order.RecieverEmail;
                lblTotalScore.Text  = order.TotalScore.ToString();
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 显示允许管理员操作的按钮
        /// 支付成功,—— 审核通过,开始备货
        /// 支付成功,—— 退还积分给买家,交易失败
        /// 开始备货,—— 发货
        /// 开始备货 —— 退还积分给买家,交易失败
        /// 已发货,—— 物流确认到货,交易完成
        /// 已发货,—— 买家拒收,退还积分给买家,交易失败
        /// </summary>
        /// <param name="order"></param>
        private void ShowActions(GiftOrderModel order)
        {
            btnPrepareGoods.Visible = false;
            btnFail.Visible         = false;
            btnSend.Visible         = false;
            btnFinish.Visible       = false;
            txtActionRemark.Visible = false;

            //if (order.OrderStatus == OrderStatus.交易完成 || order.OrderStatus == OrderStatus.交易失败)
            //{
            //    txtActionRemark.Visible = false;
            //}

            if (order.OrderStatus == OrderStatus.已创建)
            {
                btnFail.Visible         = true;
                btnPrepareGoods.Visible = true;
                txtActionRemark.Visible = true;
            }
            else if (order.OrderStatus == OrderStatus.备货中)
            {
                btnFail.Visible         = true;
                btnSend.Visible         = true;
                txtActionRemark.Visible = true;
            }
            else if (order.OrderStatus == OrderStatus.已发货)
            {
                btnFail.Visible         = true;
                btnFinish.Visible       = true;
                txtActionRemark.Visible = true;
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 置为订单完成,前置条件:物流已到货,且支付成功
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnFinish_Click(object sender, EventArgs e)
        {
            GiftOrderBll      obll  = new GiftOrderBll();
            OrderChangeLogBll lbll  = new OrderChangeLogBll();
            GiftOrderModel    order = obll.GetModel(lblOrderId.Text);

            if (order != null && order.OrderStatus == OrderStatus.已发货)
            {
                obll.ChangeOrderStatus(order.OrderId, OrderStatus.交易完成);
                lbll.Add(order.OrderId, txtActionRemark.Text.Trim(), OrderStatus.交易完成.ToString(),
                         Context.User.Identity.Name);
            }
            ShowOrderInfo(lblOrderId.Text);
        }
Esempio n. 4
0
        /// <summary>
        /// 置为交易失败,前置条件为:货到付款订单,已发货;其他订单,已退款
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnFail_Click(object sender, EventArgs e)
        {
            GiftOrderBll      obll  = new GiftOrderBll();
            OrderChangeLogBll lbll  = new OrderChangeLogBll();
            GiftOrderModel    order = obll.GetModel(lblOrderId.Text);

            if (order != null &&
                (order.OrderStatus == OrderStatus.已创建 || order.OrderStatus == OrderStatus.备货中 ||
                 order.OrderStatus == OrderStatus.已发货))
            {
                obll.ChangeOrderStatus(order.OrderId, OrderStatus.交易失败);
                lbll.Add(order.OrderId, txtActionRemark.Text.Trim(), OrderStatus.交易失败.ToString(),
                         Context.User.Identity.Name);

                MemberInfo.LogScore(order.UserId, NoName.NetShop.Common.ScoreType.Gift, order.TotalScore, order.OrderId, "订单失败,归还积分");
            }
            ShowOrderInfo(lblOrderId.Text);
        }
Esempio n. 5
0
        public JsonResult OrderSubmit(long id, long regionId, int count)
        {
            Result result = new Result()
            {
                success = false, msg = "未知错误", status = 0
            };
            bool isdataok = true;

            if (count < 1)
            {
                isdataok       = false;
                result.success = false;
                result.msg     = "错误的兑换数量!";
                result.status  = -8;

                return(Json(result));
            }
            //Checkout
            List <GiftOrderItemModel> gorditemlist = new List <GiftOrderItemModel>();

            #region 礼品信息判断
            //礼品信息
            GiftInfo giftdata = _iGiftService.GetById(id);
            if (giftdata == null)
            {
                isdataok       = false;
                result.success = false;
                result.msg     = "礼品不存在!";
                result.status  = -2;

                return(Json(result));
            }

            if (giftdata.GetSalesStatus != GiftInfo.GiftSalesStatus.Normal)
            {
                isdataok       = false;
                result.success = false;
                result.msg     = "礼品已失效!";
                result.status  = -2;

                return(Json(result));
            }

            //库存判断
            if (count > giftdata.StockQuantity)
            {
                isdataok       = false;
                result.success = false;
                result.msg     = "礼品库存不足,仅剩 " + giftdata.StockQuantity.ToString() + " 件!";
                result.status  = -3;

                return(Json(result));
            }

            //积分数
            if (giftdata.NeedIntegral < 1)
            {
                isdataok       = false;
                result.success = false;
                result.msg     = "礼品关联等级信息有误或礼品积分数据有误!";
                result.status  = -5;

                return(Json(result));
            }
            #endregion

            #region 用户信息判断
            //限购数量
            if (giftdata.LimtQuantity > 0)
            {
                int ownbuynumber = _iGiftsOrderService.GetOwnBuyQuantity(CurrentUser.Id, id);
                if (ownbuynumber + count > giftdata.LimtQuantity)
                {
                    isdataok       = false;
                    result.success = false;
                    result.msg     = "超过礼品限兑数量!";
                    result.status  = -4;

                    return(Json(result));
                }
            }
            var userInte = MemberIntegralApplication.GetMemberIntegral(CurrentUser.Id);
            if (giftdata.NeedIntegral * count > userInte.AvailableIntegrals)
            {
                isdataok       = false;
                result.success = false;
                result.msg     = "积分不足!";
                result.status  = -6;

                return(Json(result));
            }
            if (giftdata.NeedGrade > 0)
            {
                //等级判定
                if (!MemberGradeApplication.IsAllowGrade(CurrentUser.Id, giftdata.NeedGrade))
                {
                    isdataok       = false;
                    result.success = false;
                    result.msg     = "用户等级不足!";
                    result.status  = -6;
                    return(Json(result));
                }
            }
            #endregion

            Entities.ShippingAddressInfo shipdata = GetShippingAddress(regionId);
            if (shipdata == null)
            {
                isdataok       = false;
                result.success = false;
                result.msg     = "错误的收货人地址信息!";
                result.status  = -6;

                return(Json(result));
            }

            if (isdataok)
            {
                gorditemlist.Add(new GiftOrderItemModel {
                    GiftId = giftdata.Id, Counts = count
                });
                GiftOrderModel createorderinfo = new GiftOrderModel();
                createorderinfo.Gifts          = gorditemlist;
                createorderinfo.CurrentUser    = CurrentUser;
                createorderinfo.ReceiveAddress = shipdata;
                Himall.Entities.GiftOrderInfo orderdata = _iGiftsOrderService.CreateOrder(createorderinfo);
                result.success = true;
                result.msg     = orderdata.Id.ToString();
                result.status  = 1;
            }

            return(Json(result));
        }
Esempio n. 6
0
        public object PostSubmitOrder(GiftConfirmOrderModel value)
        {
            CheckUserLogin();
            long id        = value.ID;
            var  addressId = value.AddressId;

            if (addressId < 1)
            {
                return(Json(ErrorResult <bool>("错误的收货地址!", code: -8)));
            }
            int count = value.Count;

            if (count < 1)
            {
                return(Json(ErrorResult <bool>("错误的兑换数量!", code: -8)));
            }
            List <GiftOrderItemModel> gorditemlist = new List <GiftOrderItemModel>();
            var curUser = MemberApplication.GetMember(CurrentUser.Id);

            if (curUser == null)
            {
                return(Json(ErrorResult <bool>("用户登录错误!", code: -6)));
            }
            var userInte = MemberIntegralApplication.GetMemberIntegral(curUser.Id);

            //礼品信息
            var giftdata = GiftApplication.GetById(id);

            if (giftdata == null)
            {
                return(Json(ErrorResult <bool>("礼品不存在!", code: -2)));
            }

            if (giftdata.GetSalesStatus != Entities.GiftInfo.GiftSalesStatus.Normal)
            {
                return(Json(ErrorResult <bool>("礼品已失效!", code: -2)));
            }

            //库存判断
            if (count > giftdata.StockQuantity)
            {
                return(Json(ErrorResult <bool>("礼品库存不足,仅剩 " + giftdata.StockQuantity.ToString() + " 件!", code: -3)));
            }

            //积分数
            if (giftdata.NeedIntegral < 1)
            {
                return(Json(ErrorResult <bool>("礼品关联等级信息有误或礼品积分数据有误!", code: -5)));
            }
            //限购数量
            if (giftdata.LimtQuantity > 0)
            {
                int ownbuynumber = GiftsOrderApplication.GetOwnBuyQuantity(CurrentUser.Id, id);
                if (ownbuynumber + count > giftdata.LimtQuantity)
                {
                    return(Json(ErrorResult <bool>("超过礼品限兑数量!", code: -4)));
                }
            }
            if (giftdata.NeedIntegral * count > userInte.AvailableIntegrals)
            {
                return(Json(ErrorResult <bool>("积分不足!", code: -6)));
            }

            //等级判定
            if (!MemberGradeApplication.IsAllowGrade(CurrentUser.Id, giftdata.NeedGrade))
            {
                return(Json(ErrorResult <bool>("用户等级不足!", code: -6)));
            }
            Entities.ShippingAddressInfo shipdata = GetShippingAddress(addressId);
            if (shipdata == null)
            {
                return(Json(ErrorResult <bool>("错误的收货人地址信息!", code: -6)));
            }
            gorditemlist.Add(new GiftOrderItemModel {
                GiftId = giftdata.Id, Counts = count
            });
            GiftOrderModel createorderinfo = new GiftOrderModel();

            createorderinfo.Gifts          = gorditemlist;
            createorderinfo.CurrentUser    = curUser;
            createorderinfo.ReceiveAddress = shipdata;
            var orderdata = GiftsOrderApplication.CreateOrder(createorderinfo);

            return(Json(new { success = true, msg = orderdata.Id.ToString(), code = 1 }));
        }
Esempio n. 7
0
        public JsonResult SubmitOrder(long id, long regionId, int count)
        {
            Result result = new Result()
            {
                success = false,
                msg     = "未知错误",
                status  = 0
            };
            Result str  = result;
            bool   flag = true;

            if (count < 1)
            {
                flag        = false;
                str.success = false;
                str.msg     = "错误的兑换数量!";
                str.status  = -8;
                return(Json(str));
            }
            List <GiftOrderItemModel> giftOrderItemModels = new List <GiftOrderItemModel>();
            UserMemberInfo            member = ServiceHelper.Create <IMemberService>().GetMember(base.CurrentUser.Id);
            GiftInfo byId = giftser.GetById(id);

            if (byId == null)
            {
                flag        = false;
                str.success = false;
                str.msg     = "礼品不存在!";
                str.status  = -2;
                return(Json(str));
            }
            if (byId.GetSalesStatus != GiftInfo.GiftSalesStatus.Normal)
            {
                flag        = false;
                str.success = false;
                str.msg     = "礼品己失效!";
                str.status  = -2;
                return(Json(str));
            }
            if (count > byId.StockQuantity)
            {
                flag        = false;
                str.success = false;
                int stockQuantity = byId.StockQuantity;
                str.msg    = string.Concat("礼品库存不足,仅剩 ", stockQuantity.ToString(), " 件!");
                str.status = -3;
                return(Json(str));
            }
            if (byId.NeedIntegral < 1)
            {
                flag        = false;
                str.success = false;
                str.msg     = "礼品关联等级信息有误或礼品积分数据有误!";
                str.status  = -5;
                return(Json(str));
            }
            if (byId.LimtQuantity > 0 && orderser.GetOwnBuyQuantity(base.CurrentUser.Id, id) + count > byId.LimtQuantity)
            {
                flag        = false;
                str.success = false;
                str.msg     = "超过礼品限兑数量!";
                str.status  = -4;
                return(Json(str));
            }
            if (byId.NeedIntegral * count > member.AvailableIntegrals)
            {
                flag        = false;
                str.success = false;
                str.msg     = "积分不足!";
                str.status  = -6;
                return(Json(str));
            }
            if (member.HistoryIntegral < byId.GradeIntegral)
            {
                flag        = false;
                str.success = false;
                str.msg     = "用户等级不足!";
                str.status  = -6;
                return(Json(str));
            }
            ShippingAddressInfo shippingAddress = GetShippingAddress(new long?(regionId));

            if (shippingAddress == null)
            {
                flag        = false;
                str.success = false;
                str.msg     = "错误的收货人地址信息!";
                str.status  = -6;
                return(Json(str));
            }
            if (flag)
            {
                GiftOrderItemModel giftOrderItemModel = new GiftOrderItemModel()
                {
                    GiftId = byId.Id,
                    Counts = count
                };
                giftOrderItemModels.Add(giftOrderItemModel);
                GiftOrderModel giftOrderModel = new GiftOrderModel()
                {
                    Gifts          = giftOrderItemModels,
                    CurrentUser    = member,
                    ReceiveAddress = shippingAddress
                };
                GiftOrderInfo giftOrderInfo = orderser.CreateOrder(giftOrderModel);
                str.success = true;
                str.msg     = giftOrderInfo.Id.ToString();
                str.status  = 1;
            }
            return(Json(str));
        }
Esempio n. 8
0
        /// <summary>
        /// 创建订单
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public GiftOrderInfo CreateOrder(GiftOrderModel model)
        {
            if (model.CurrentUser == null)
            {
                throw new HimallException("错误的用户信息");
            }
            if (model.ReceiveAddress == null)
            {
                throw new HimallException("错误的收货人信息");
            }
            GiftOrderInfo result = new GiftOrderInfo()
            {
                Id             = GenerateOrderNumber(),
                UserId         = model.CurrentUser.Id,
                RegionId       = model.ReceiveAddress.RegionId,
                ShipTo         = model.ReceiveAddress.ShipTo,
                Address        = model.ReceiveAddress.Address + " " + model.ReceiveAddress.AddressDetail,
                RegionFullName = model.ReceiveAddress.RegionFullName,
                CellPhone      = model.ReceiveAddress.Phone,
                TopRegionId    = int.Parse(model.ReceiveAddress.RegionIdPath.Split(',')[0]),
                UserRemark     = model.UserRemark,
            };
            var giftOrderItemInfo = new List <GiftOrderItemInfo>();

            DbFactory.Default
            .InTransaction(() =>
            {
                //礼品信息处理,库存判断并减库存
                foreach (var item in model.Gifts)
                {
                    if (item.Counts < 1)
                    {
                        throw new HimallException("错误的兑换数量!");
                    }
                    GiftInfo giftdata = DbFactory.Default.Get <GiftInfo>().Where(d => d.Id == item.GiftId).FirstOrDefault();
                    if (giftdata != null && giftdata.GetSalesStatus == GiftInfo.GiftSalesStatus.Normal)
                    {
                        if (giftdata.StockQuantity >= item.Counts)
                        {
                            giftdata.StockQuantity = giftdata.StockQuantity - item.Counts; //先减库存
                            giftdata.RealSales    += item.Counts;                          //加销量

                            GiftOrderItemInfo gorditem = new GiftOrderItemInfo()
                            {
                                GiftId       = giftdata.Id,
                                GiftName     = giftdata.GiftName,
                                GiftValue    = giftdata.GiftValue,
                                ImagePath    = giftdata.ImagePath,
                                OrderId      = result.Id,
                                Quantity     = item.Counts,
                                SaleIntegral = giftdata.NeedIntegral
                            };
                            giftOrderItemInfo.Add(gorditem);
                            DbFactory.Default.Update(giftdata);
                        }
                        else
                        {
                            throw new HimallException("礼品库存不足!");
                        }
                    }
                    else
                    {
                        throw new HimallException("礼品不存在或已失效!");
                    }
                }
                //建立订单
                result.TotalIntegral = giftOrderItemInfo.Sum(d => d.Quantity * d.SaleIntegral);
                result.OrderStatus   = GiftOrderInfo.GiftOrderStatus.WaitDelivery;
                result.OrderDate     = DateTime.Now;
                DbFactory.Default.Add(result);
                DbFactory.Default.AddRange(giftOrderItemInfo);
                //减少积分
                var userdata = DbFactory.Default.Get <MemberInfo>().Where(d => d.Id == model.CurrentUser.Id).FirstOrDefault();
                DeductionIntegral(userdata, result.Id, (int)result.TotalIntegral);
            });
            return(result);
        }
Esempio n. 9
0
        public GiftOrderInfo CreateOrder(GiftOrderModel model)
        {
            if (model.CurrentUser == null)
            {
                throw new HimallException("错误的用户信息");
            }
            if (model.ReceiveAddress == null)
            {
                throw new HimallException("错误的收货人信息");
            }
            GiftOrderInfo giftOrderInfo = new GiftOrderInfo()
            {
                Id             = GenerateOrderNumber(),
                UserId         = model.CurrentUser.Id,
                RegionId       = new int?(model.ReceiveAddress.RegionId),
                ShipTo         = model.ReceiveAddress.ShipTo,
                Address        = model.ReceiveAddress.Address,
                RegionFullName = model.ReceiveAddress.RegionFullName,
                CellPhone      = model.ReceiveAddress.Phone
            };
            string regionIdPath = model.ReceiveAddress.RegionIdPath;

            char[] chrArray = new char[] { ',' };
            giftOrderInfo.TopRegionId = new int?(int.Parse(regionIdPath.Split(chrArray)[0]));
            giftOrderInfo.UserRemark  = model.UserRemark;
            GiftOrderInfo now = giftOrderInfo;

            using (TransactionScope transactionScope = new TransactionScope())
            {
                foreach (GiftOrderItemModel gift in model.Gifts)
                {
                    if (gift.Counts < 1)
                    {
                        throw new HimallException("错误的兑换数量!");
                    }
                    GiftInfo stockQuantity = context.GiftInfo.FirstOrDefault((GiftInfo d) => d.Id == gift.GiftId);
                    if (stockQuantity == null || stockQuantity.GetSalesStatus != GiftInfo.GiftSalesStatus.Normal)
                    {
                        throw new HimallException("礼品不存在或己失效!");
                    }
                    if (stockQuantity.StockQuantity < gift.Counts)
                    {
                        throw new HimallException("礼品库存不足!");
                    }
                    stockQuantity.StockQuantity = stockQuantity.StockQuantity - gift.Counts;
                    GiftInfo realSales = stockQuantity;
                    realSales.RealSales = realSales.RealSales + gift.Counts;
                    GiftOrderItemInfo giftOrderItemInfo = new GiftOrderItemInfo()
                    {
                        GiftId       = stockQuantity.Id,
                        GiftName     = stockQuantity.GiftName,
                        GiftValue    = stockQuantity.GiftValue,
                        ImagePath    = stockQuantity.ImagePath,
                        OrderId      = new long?(now.Id),
                        Quantity     = gift.Counts,
                        SaleIntegral = new int?(stockQuantity.NeedIntegral)
                    };
                    now.Himall_GiftOrderItem.Add(giftOrderItemInfo);
                }
                now.TotalIntegral = now.Himall_GiftOrderItem.Sum <GiftOrderItemInfo>((GiftOrderItemInfo d) => {
                    int quantity     = d.Quantity;
                    int?saleIntegral = d.SaleIntegral;
                    if (!saleIntegral.HasValue)
                    {
                        return(null);
                    }
                    return(new int?(quantity * saleIntegral.GetValueOrDefault()));
                });
                now.OrderStatus = GiftOrderInfo.GiftOrderStatus.WaitDelivery;
                now.OrderDate   = DateTime.Now;
                context.GiftOrderInfo.Add(now);
                context.SaveChanges();
                UserMemberInfo userMemberInfo = context.UserMemberInfo.FirstOrDefault((UserMemberInfo d) => d.Id == model.CurrentUser.Id);
                DeductionIntegral(userMemberInfo, now.Id, now.TotalIntegral.Value);
                transactionScope.Complete();
            }
            return(now);
        }
Esempio n. 10
0
        /// <summary>
        /// 提交并处理预约单
        /// </summary>
        /// <param name="id"></param>
        /// <param name="regionId"></param>
        /// <param name="count"></param>
        /// <returns></returns>
        public Result SubmitOrder(GiftConfirmOrder value)
        {
            Result result = new Result()
            {
                success = false, msg = "未知错误", status = 0
            };
            bool isdataok = true;
            long id       = value.ID;
            var  regionId = value.RegionId;

            if (regionId < 1)
            {
                result.success = false;
                result.msg     = "错误的收货地址!";
                result.status  = -8;
                return(result);
            }
            int count = value.Count;

            if (count < 1)
            {
                isdataok       = false;
                result.success = false;
                result.msg     = "错误的兑换数量!";
                result.status  = -8;
                return(result);
            }
            if (CurrentUser == null)
            {
                isdataok       = false;
                result.success = false;
                result.msg     = "用户未登录!";
                result.status  = -6;
                return(result);
            }
            //Checkout
            List <GiftOrderItemModel> gorditemlist = new List <GiftOrderItemModel>();
            var curUser = _iMemberService.GetMember(CurrentUser.Id);

            if (curUser == null)
            {
                isdataok       = false;
                result.success = false;
                result.msg     = "用户登录错误!";
                result.status  = -6;
                return(result);
            }
            var userInte = MemberIntegralApplication.GetMemberIntegral(curUser.Id);

            #region 礼品信息判断
            //礼品信息
            GiftInfo giftdata = _iGiftService.GetById(id);
            if (giftdata == null)
            {
                isdataok       = false;
                result.success = false;
                result.msg     = "礼品不存在!";
                result.status  = -2;

                return(result);
            }

            if (giftdata.GetSalesStatus != GiftInfo.GiftSalesStatus.Normal)
            {
                isdataok       = false;
                result.success = false;
                result.msg     = "礼品已失效!";
                result.status  = -2;

                return(result);
            }

            //库存判断
            if (count > giftdata.StockQuantity)
            {
                isdataok       = false;
                result.success = false;
                result.msg     = "礼品库存不足,仅剩 " + giftdata.StockQuantity.ToString() + " 件!";
                result.status  = -3;

                return(result);
            }

            //积分数
            if (giftdata.NeedIntegral < 1)
            {
                isdataok       = false;
                result.success = false;
                result.msg     = "礼品关联等级信息有误或礼品积分数据有误!";
                result.status  = -5;

                return(result);
            }
            #endregion

            #region 用户信息判断
            //限购数量
            if (giftdata.LimtQuantity > 0)
            {
                int ownbuynumber = _iGiftsOrderService.GetOwnBuyQuantity(CurrentUser.Id, id);
                if (ownbuynumber + count > giftdata.LimtQuantity)
                {
                    isdataok       = false;
                    result.success = false;
                    result.msg     = "超过礼品限兑数量!";
                    result.status  = -4;

                    return(result);
                }
            }
            if (giftdata.NeedIntegral * count > userInte.AvailableIntegrals)
            {
                isdataok       = false;
                result.success = false;
                result.msg     = "积分不足!";
                result.status  = -6;

                return(result);
            }
            if (giftdata.NeedGrade > 0)
            {
                var memgradeid = _iMemberGradeService.GetMemberGradeByUserId(curUser.Id);
                //等级判定
                if (!_iMemberGradeService.IsOneGreaterOrEqualTwo(memgradeid, giftdata.NeedGrade))
                {
                    isdataok       = false;
                    result.success = false;
                    result.msg     = "用户等级不足!";
                    result.status  = -6;

                    return(result);
                }
            }
            #endregion

            ShippingAddressInfo shipdata = GetShippingAddress(regionId);
            if (shipdata == null)
            {
                isdataok       = false;
                result.success = false;
                result.msg     = "错误的收货人地址信息!";
                result.status  = -6;

                return(result);
            }

            if (isdataok)
            {
                gorditemlist.Add(new GiftOrderItemModel {
                    GiftId = giftdata.Id, Counts = count
                });
                GiftOrderModel createorderinfo = new GiftOrderModel();
                createorderinfo.Gifts          = gorditemlist;
                createorderinfo.CurrentUser    = curUser;
                createorderinfo.ReceiveAddress = shipdata;
                GiftOrderInfo orderdata = _iGiftsOrderService.CreateOrder(createorderinfo);
                result.success = true;
                result.msg     = orderdata.Id.ToString();
                result.status  = 1;
            }

            return(result);
        }
Esempio n. 11
0
        /// <summary>
        /// 创建预约单
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public GiftOrderInfo CreateOrder(GiftOrderModel model)
        {
            if (model.CurrentUser == null)
            {
                throw new HimallException("错误的用户信息");
            }
            if (model.ReceiveAddress == null)
            {
                throw new HimallException("错误的收货人信息");
            }
            GiftOrderInfo result = new GiftOrderInfo()
            {
                Id             = GenerateOrderNumber(),
                UserId         = model.CurrentUser.Id,
                RegionId       = model.ReceiveAddress.RegionId,
                ShipTo         = model.ReceiveAddress.ShipTo,
                Address        = model.ReceiveAddress.Address,
                RegionFullName = model.ReceiveAddress.RegionFullName,
                CellPhone      = model.ReceiveAddress.Phone,
                TopRegionId    = int.Parse(model.ReceiveAddress.RegionIdPath.Split(',')[0]),
                UserRemark     = model.UserRemark
            };

            using (TransactionScope scope = new TransactionScope())
            {
                //礼品信息处理,库存判断并减库存
                foreach (var item in model.Gifts)
                {
                    if (item.Counts < 1)
                    {
                        throw new HimallException("错误的兑换数量!");
                    }
                    GiftInfo giftdata = Context.GiftInfo.FirstOrDefault(d => d.Id == item.GiftId);
                    if (giftdata != null && giftdata.GetSalesStatus == GiftInfo.GiftSalesStatus.Normal)
                    {
                        if (giftdata.StockQuantity >= item.Counts)
                        {
                            giftdata.StockQuantity = giftdata.StockQuantity - item.Counts; //先减库存
                            giftdata.RealSales    += item.Counts;                          //加销量

                            GiftOrderItemInfo gorditem = new GiftOrderItemInfo()
                            {
                                GiftId       = giftdata.Id,
                                GiftName     = giftdata.GiftName,
                                GiftValue    = giftdata.GiftValue,
                                ImagePath    = giftdata.ImagePath,
                                OrderId      = result.Id,
                                Quantity     = item.Counts,
                                SaleIntegral = giftdata.NeedIntegral
                            };
                            result.Himall_GiftOrderItem.Add(gorditem);
                        }
                        else
                        {
                            throw new HimallException("礼品库存不足!");
                        }
                    }
                    else
                    {
                        throw new HimallException("礼品不存在或已失效!");
                    }
                }
                //建立预约单
                result.TotalIntegral = result.Himall_GiftOrderItem.Sum(d => d.Quantity * d.SaleIntegral);
                result.OrderStatus   = GiftOrderInfo.GiftOrderStatus.WaitDelivery;
                result.OrderDate     = DateTime.Now;
                Context.GiftOrderInfo.Add(result);
                Context.SaveChanges();
                //减少积分
                var userdata = Context.UserMemberInfo.FirstOrDefault(d => d.Id == model.CurrentUser.Id);
                DeductionIntegral(userdata, result.Id, (int)result.TotalIntegral);

                scope.Complete();
            }

            return(result);
        }
Esempio n. 12
0
 public static GiftOrderInfo CreateOrder(GiftOrderModel model)
 {
     return(Service.CreateOrder(model));
 }
        public JsonResult SubmitOrder(long id, long regionId, int count)
        {
            Result result = new Result()
            {
                success = false,
                msg     = "Unknown error",
                status  = 0
            };
            Result str  = result;
            bool   flag = true;

            if (count < 1)
            {
                flag        = false;
                str.success = false;
                str.msg     = "Exchange quantity error!";
                str.status  = -8;
                return(Json(str));
            }
            List <GiftOrderItemModel> giftOrderItemModels = new List <GiftOrderItemModel>();
            UserMemberInfo            member = ServiceHelper.Create <IMemberService>().GetMember(base.CurrentUser.Id);
            GiftInfo byId = giftser.GetById(id);

            if (byId == null)
            {
                flag        = false;
                str.success = false;
                str.msg     = "Gift does not exist!";
                str.status  = -2;
                return(Json(str));
            }
            if (byId.GetSalesStatus != GiftInfo.GiftSalesStatus.Normal)
            {
                flag        = false;
                str.success = false;
                str.msg     = "Gift expired!";
                str.status  = -2;
                return(Json(str));
            }
            if (count > byId.StockQuantity)
            {
                flag        = false;
                str.success = false;
                int stockQuantity = byId.StockQuantity;
                str.msg    = string.Concat("Gift inventory shortage, only remain ", stockQuantity.ToString(), " items!");
                str.status = -3;
                return(Json(str));
            }
            if (byId.NeedIntegral < 1)
            {
                flag        = false;
                str.success = false;
                str.msg     = "Gifts associated level information is wrong or points wrong!";
                str.status  = -5;
                return(Json(str));
            }
            if (byId.LimtQuantity > 0 && orderser.GetOwnBuyQuantity(base.CurrentUser.Id, id) + count > byId.LimtQuantity)
            {
                flag        = false;
                str.success = false;
                str.msg     = "Exceed gift exchange quantity!";
                str.status  = -4;
                return(Json(str));
            }
            if (byId.NeedIntegral * count > member.AvailableIntegrals)
            {
                flag        = false;
                str.success = false;
                str.msg     = "Lack of points!";
                str.status  = -6;
                return(Json(str));
            }
            if (member.HistoryIntegral < byId.GradeIntegral)
            {
                flag        = false;
                str.success = false;
                str.msg     = "Lack of Level!";
                str.status  = -6;
                return(Json(str));
            }
            ShippingAddressInfo shippingAddress = GetShippingAddress(new long?(regionId));

            if (shippingAddress == null)
            {
                flag        = false;
                str.success = false;
                str.msg     = "Shipping address error!";
                str.status  = -6;
                return(Json(str));
            }
            if (flag)
            {
                GiftOrderItemModel giftOrderItemModel = new GiftOrderItemModel()
                {
                    GiftId = byId.Id,
                    Counts = count
                };
                giftOrderItemModels.Add(giftOrderItemModel);
                GiftOrderModel giftOrderModel = new GiftOrderModel()
                {
                    Gifts          = giftOrderItemModels,
                    CurrentUser    = member,
                    ReceiveAddress = shippingAddress
                };
                GiftOrderInfo giftOrderInfo = orderser.CreateOrder(giftOrderModel);
                str.success = true;
                str.msg     = giftOrderInfo.Id.ToString();
                str.status  = 1;
            }
            return(Json(str));
        }