Ejemplo n.º 1
0
        public ActionResult OperateOrder(int oid = -1, int actionType = -1, string actionDes = "")
        {
            OrderInfo orderInfo = AdminOrders.GetOrderByOid(oid);
            if (orderInfo == null)
                return PromptView("订单不存在");

            if (actionDes.Length > 125)
            {
                OperateOrderModel model = new OperateOrderModel();
                model.Oid = oid;
                model.OrderInfo = orderInfo;
                model.OrderActionType = (OrderActionType)actionType;
                model.ActionDes = actionDes;

                ModelState.AddModelError("actionDes", "最多只能输入125个字");
                return View(model);
            }

            OrderActionType orderActionType = (OrderActionType)actionType;
            OrderState orderState = (OrderState)orderInfo.OrderState;

            if (orderActionType == OrderActionType.Pay)//支付订单
            {
                if (orderInfo.PayMode != 2)
                    return PromptView(Url.Action("orderinfo", new { oid = oid }), "付款操作只适用于线下付款");

                if (orderState != OrderState.WaitPaying)
                    return PromptView(Url.Action("orderinfo", new { oid = oid }), "当前不能支付订单");

                string paySN = WebHelper.GetFormString("paySN").Trim();
                if (paySN.Length < 1)
                {
                    OperateOrderModel model = new OperateOrderModel();
                    model.Oid = oid;
                    model.OrderInfo = orderInfo;
                    model.OrderActionType = orderActionType;
                    model.ActionDes = actionDes;

                    ModelState.AddModelError("paySN", "请填写支付单号");
                    return View(model);
                }
                AdminOrders.PayOrder(oid, OrderState.Confirming, paySN, DateTime.Now);
                CreateOrderAction(oid, orderActionType, actionDes.Length == 0 ? "您的订单成功支付" : actionDes);

            }
            else if (orderActionType == OrderActionType.Confirm)//确认订单
            {
                if (orderState != OrderState.Confirming)
                    return PromptView(Url.Action("orderinfo", new { oid = oid }), "买家还未付款,不能确认订单");

                AdminOrders.ConfirmOrder(orderInfo);
                CreateOrderAction(oid, orderActionType, actionDes.Length == 0 ? "您的订单已经确认" : actionDes);
            }
            else if (orderActionType == OrderActionType.PreProduct)//备货
            {
                if (orderState != OrderState.Confirmed)
                    return PromptView(Url.Action("orderinfo", new { oid = oid }), "订单还未确认,不能备货");

                AdminOrders.PreProduct(orderInfo);
                CreateOrderAction(oid, orderActionType, actionDes.Length == 0 ? "您的订单正在备货" : actionDes);
            }
            else if (orderActionType == OrderActionType.Send)//发货
            {
                if (orderState != OrderState.PreProducting)
                    return PromptView(Url.Action("orderinfo", new { oid = oid }), "订单还未备货,不能发货");

                string shipSN = WebHelper.GetFormString("shipSN").Trim();
                if (shipSN.Length < 1)
                {
                    OperateOrderModel model = new OperateOrderModel();
                    model.Oid = oid;
                    model.OrderInfo = orderInfo;
                    model.OrderActionType = orderActionType;
                    model.ActionDes = actionDes;

                    ModelState.AddModelError("shipSN", "请填写配送单号");
                    return View(model);
                }
                AdminOrders.SendOrder(oid, OrderState.Sended, shipSN, DateTime.Now);
                CreateOrderAction(oid, orderActionType, actionDes.Length == 0 ? "您的订单已经发货,单号为:" + shipSN : actionDes);
            }
            else if (orderActionType == OrderActionType.Complete)//完成订单
            {
                if (orderState != OrderState.Sended)
                    return PromptView(Url.Action("orderinfo", new { oid = oid }), "订单还未发货,不能完成订单");

                if (orderInfo.PayMode == 0)
                {
                    string paySN = WebHelper.GetFormString("paySN").Trim();
                    if (paySN.Length < 1)
                    {
                        OperateOrderModel model = new OperateOrderModel();
                        model.Oid = oid;
                        model.OrderInfo = orderInfo;
                        model.OrderActionType = orderActionType;
                        model.ActionDes = actionDes;

                        ModelState.AddModelError("paySN", "请填写支付单号");
                        return View(model);
                    }
                    else
                    {
                        AdminOrders.PayOrder(oid, OrderState.Sended, paySN, DateTime.Now);
                        CreateOrderAction(oid, orderActionType, actionDes.Length == 0 ? "您的订单成功支付" : actionDes);
                    }
                }

                PartUserInfo partUserInfo = Users.GetPartUserById(orderInfo.Uid);
                AdminOrders.CompleteOrder(ref partUserInfo, orderInfo, DateTime.Now, WorkContext.IP);
                CreateOrderAction(oid, orderActionType, actionDes.Length == 0 ? "已完成配送,感谢您在" + WorkContext.ShopConfig.ShopName + "购物,欢迎您再次光临" : actionDes);
            }
            else if (orderActionType == OrderActionType.Return)//退货
            {
                if (orderState != OrderState.Sended && orderState != OrderState.Completed)
                    return PromptView(Url.Action("orderinfo", new { oid = oid }), "订单当前不能退货");

                PartUserInfo partUserInfo = Users.GetPartUserById(orderInfo.Uid);
                AdminOrders.ReturnOrder(ref partUserInfo, orderInfo, WorkContext.Uid, DateTime.Now);
                CreateOrderAction(oid, orderActionType, actionDes.Length == 0 ? "订单已退货" : actionDes);
            }
            else if (orderActionType == OrderActionType.Lock)//锁定订单
            {
                if (!(orderState == OrderState.WaitPaying || (orderState == OrderState.Confirming && orderInfo.PayMode == 0)))
                    return PromptView(Url.Action("orderinfo", new { oid = oid }), "订单当前不能锁定");

                AdminOrders.LockOrder(orderInfo);
                CreateOrderAction(oid, orderActionType, "订单已锁定:" + actionDes);
            }
            else if (orderActionType == OrderActionType.Cancel)//取消订单
            {
                if (!(orderState == OrderState.WaitPaying || (orderState == OrderState.Confirming && orderInfo.PayMode == 0)))
                    return PromptView(Url.Action("orderinfo", new { oid = oid }), "订单当前不能取消");

                PartUserInfo partUserInfo = Users.GetPartUserById(orderInfo.Uid);
                AdminOrders.CancelOrder(ref partUserInfo, orderInfo, WorkContext.Uid, DateTime.Now);
                CreateOrderAction(oid, orderActionType, actionDes.Length == 0 ? "订单已取消" : actionDes);
            }
            else
            {
                return PromptView(Url.Action("orderinfo", new { oid = oid }), "当前操作不存在");
            }

            AddAdminOperateLog("操作订单", "操作订单,订单ID为:" + oid);
            return PromptView(Url.Action("orderinfo", new { oid = oid }), "操作已完成");
        }
Ejemplo n.º 2
0
        public ActionResult OperateOrder(int oid = -1, int actionType = -1)
        {
            OrderInfo orderInfo = AdminOrders.GetOrderByOid(oid);
            if (orderInfo == null)
                return PromptView("订单不存在");

            OrderActionType orderActionType = (OrderActionType)actionType;
            OrderState orderState = (OrderState)orderInfo.OrderState;

            if (orderActionType == OrderActionType.Pay)//支付订单
            {
                if (orderInfo.PayMode != 2)
                    return PromptView(Url.Action("orderinfo", new { oid = oid }), "付款操作只适用于线下付款");

                if (orderState != OrderState.WaitPaying)
                    return PromptView(Url.Action("orderinfo", new { oid = oid }), "当前不能支付订单");
            }
            else if (orderActionType == OrderActionType.Confirm)//确认订单
            {
                if (orderState != OrderState.Confirming)
                    return PromptView(Url.Action("orderinfo", new { oid = oid }), "买家还未付款,不能确认订单");
            }
            else if (orderActionType == OrderActionType.PreProduct)//备货
            {
                if (orderState != OrderState.Confirmed)
                    return PromptView(Url.Action("orderinfo", new { oid = oid }), "订单还未确认,不能备货");
            }
            else if (orderActionType == OrderActionType.Send)//发货
            {
                if (orderState != OrderState.PreProducting)
                    return PromptView(Url.Action("orderinfo", new { oid = oid }), "订单还未备货,不能发货");
            }
            else if (orderActionType == OrderActionType.Complete)//完成订单
            {
                if (orderState != OrderState.Sended)
                    return PromptView(Url.Action("orderinfo", new { oid = oid }), "订单还未发货,不能完成订单");
            }
            else if (orderActionType == OrderActionType.Return)//退货
            {
                if (orderState != OrderState.Sended && orderState != OrderState.Completed)
                    return PromptView(Url.Action("orderinfo", new { oid = oid }), "订单当前不能退货");
            }
            else if (orderActionType == OrderActionType.Lock)//锁定订单
            {
                if (!(orderState == OrderState.WaitPaying || (orderState == OrderState.Confirming && orderInfo.PayMode == 0)))
                    return PromptView(Url.Action("orderinfo", new { oid = oid }), "订单当前不能锁定");
            }
            else if (orderActionType == OrderActionType.Cancel)//取消订单
            {
                if (!(orderState == OrderState.WaitPaying || (orderState == OrderState.Confirming && orderInfo.PayMode == 0)))
                    return PromptView(Url.Action("orderinfo", new { oid = oid }), "订单当前不能取消");
            }
            else
            {
                return PromptView(Url.Action("orderinfo", new { oid = oid }), "当前操作不存在");
            }

            OperateOrderModel model = new OperateOrderModel();
            model.Oid = oid;
            model.OrderInfo = orderInfo;
            model.OrderActionType = orderActionType;
            model.ActionDes = "";

            return View(model);
        }