/// <summary>
        /// 下单验证接口--单个产品
        /// </summary>
        /// <param name="request"></param>
        /// <param name="business"></param>
        /// <returns></returns>
        private PageResult VerifySingleOrder(OrderSingleCreateRequest request, Tbl_OTABusiness business)
        {
            var orderInfo = request.Body.OrderInfo;
            OrderSingleCreateResponse result = new OrderSingleCreateResponse
            {
                Head = HeadResult.V1,
                Body = new OrderSingleCreateInfo
                {
                    Inventory = 0
                }
            };
            var validResult = _orderService.ValidDataForVerifyOrderRequest(request);

            if (!validResult.Status)
            {
                result.Head.Code     = validResult.Code;
                result.Head.Describe = validResult.Message;
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            var tbl_Ticket      = _ticketService.GetTicket(orderInfo.Ticket.ProductId, business.ScenicId, orderInfo.VisitDate.ToDataTime());
            var validDataResult = _ticketService.ValidDataForOrderSingleCreateRequest(request, business, tbl_Ticket, result);

            if (!validDataResult.Status)
            {
                result.Head.Code     = validDataResult.Code;
                result.Head.Describe = validDataResult.Message;
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            result.Head.Code        = "000000";
            result.Head.Describe    = "成功";
            result.Body.OrderStatus = "OREDER_SUCCESS";
            return(PageDataResult.Data(result, business.Saltcode.ToString()));
        }
Пример #2
0
        /// <summary>
        /// 验证单个订单数据
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public DataValidResult ValidDataForOrderSingleCreateRequest(
            OrderSingleCreateRequest request,
            Tbl_OTABusiness business,
            Tbl_Ticket tbl_Ticket,
            OrderSingleCreateResponse response)
        {
            var result = new DataValidResult {
                Status = false
            };
            var ticket = request.Body.OrderInfo.Ticket;

            if (tbl_Ticket == null)
            {
                result.Code    = "113019";
                result.Message = "创建订单失败,选择的游玩日期超出选购产品的有效期或者选购的产品无效";
                return(result);
            }
            var existence = _otaTicketRelationService.CheckIsTicketId(business.Id, tbl_Ticket.TicketId);

            if (!existence)
            {
                result.Code    = "113019";
                result.Message = "创建订单失败,选择的游玩日期超出选购产品的有效期或者选购的产品无效";
                return(result);
            }
            if (tbl_Ticket.SalePrice != ticket.SellPrice)
            {
                result.Code    = "113020";
                result.Message = "创建订单失败,价格不一致";
                return(result);
            }
            //日销售限额为空或者0  为不限制
            if (tbl_Ticket.StockCount.HasValue && tbl_Ticket.StockCount.Value > 0)
            {
                if (!tbl_Ticket.LastUpdateTime.HasValue || tbl_Ticket.LastUpdateTime.Value.Date != DateTime.Now.Date)
                {
                    tbl_Ticket.SellCount = 0;
                }
                var sellCount = tbl_Ticket.SellCount.HasValue ? tbl_Ticket.SellCount.Value : 0;//库存
                response.Body.Inventory = tbl_Ticket.StockCount.Value - sellCount;
                if (sellCount + ticket.Quantity > tbl_Ticket.StockCount.Value)
                {
                    //开启了库存限制,购买数量超过了库存
                    result.Code    = "113026";
                    result.Message = "创建订单失败,库存不足";
                    return(result);
                }
            }
            else
            {
                response.Body.Inventory = 50000;
            }

            result.Status = true;
            return(result);
        }
Пример #3
0
        /// <summary>
        /// 创建单个产品订单
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public OrderSingleCreateResponse SingleCreateOrder(OrderSingleCreateRequest request)
        {
            request.Head = RequestHead();
            string url    = _website + "order/singleCreate";
            var    result = PostService(request, url);

            if (!string.IsNullOrEmpty(result.Data))
            {
                return(Base64Helper.Base64EncodeToObject <OrderSingleCreateResponse>(result.Data));
            }
            return(new OrderSingleCreateResponse
            {
                Head = new HeadResponse
                {
                    Code = "900001",
                    Describe = "数据格式不正确"
                }
            });
        }
Пример #4
0
        /// <summary>
        /// 创建单个产品订单
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public static OrderSingleCreateResponse SingleCreateOrder(OrderSingleCreateRequest request)
        {
            request.Head = new HeadRequest
            {
                InvokeTime      = DateTime.Now.ToString("yyyy-MM-dd"),
                InvokeUser      = key,
                ProtocolVersion = "V1"
            };
            string url    = apiUrl + "order/singleCreate";
            var    result = dooPost(request, url).Result;

            if (!string.IsNullOrEmpty(result.Data))
            {
                return(Base64Helper.Base64EncodeToObject <OrderSingleCreateResponse>(result.Data));
            }
            return(new OrderSingleCreateResponse {
                Head = new HeadResponse {
                    Describe = "数据格式不正确"
                }
            });
        }
        /// <summary>
        /// 创建单个产品订单并支付
        /// </summary>
        /// <param name="request"></param>
        /// <param name="business"></param>
        /// <returns></returns>
        private PageResult PaySingleOrder(OrderSingleCreateRequest request, Tbl_OTABusiness business)
        {
            var orderInfo = request.Body.OrderInfo;
            OrderSingleCreateResponse result = new OrderSingleCreateResponse
            {
                Head = HeadResult.V1,
                Body = new OrderSingleCreateInfo
                {
                    Inventory = 0
                }
            };
            var validResult = _orderService.ValidDataForOrderSingleCreateRequest(request, result);

            if (!validResult.Status)
            {
                result.Head.Code     = validResult.Code;
                result.Head.Describe = validResult.Message;
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            var tbl_Ticket      = _ticketService.GetTicket(orderInfo.Ticket.ProductId, business.ScenicId, orderInfo.VisitDate.ToDataTime());
            var validDataResult = _ticketService.ValidDataForOrderSingleCreateRequest(request, business, tbl_Ticket, result);

            if (!validDataResult.Status)
            {
                result.Head.Code     = validDataResult.Code;
                result.Head.Describe = validDataResult.Message;
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            var tbl_Order       = _orderService.AddOrder(orderInfo, business);
            var tbl_OrderDetail = _orderDetailService.AddOrderDetail(orderInfo, tbl_Order, tbl_Ticket);

            _orderService.UpdateOrder(tbl_Order, tbl_OrderDetail);
            var tbl_Ticket_Testing = _ticketTestingService.AddTicketTesting(tbl_Order, tbl_OrderDetail);

            try
            {
                _orderService.BeginTran();
                _orderService.Add(tbl_Order);
                _orderDetailService.Add(tbl_OrderDetail);
                _ticketTestingService.Add(tbl_Ticket_Testing);
                _ticketService.UpdateTicketBySellCount(tbl_Ticket, tbl_OrderDetail);
                _noticeOrderConsumedService.Add(tbl_Order, tbl_OrderDetail, business);
                _saleLogService.Add(tbl_Order);
                _orderService.CommitTran();
            }
            catch (Exception ex)
            {
                _orderService.RollbackTran();
                result.Head.Code     = "113021";
                result.Head.Describe = "订单创建异常,订单创建失败";
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            result.Head.Code          = "000000";
            result.Head.Describe      = "成功";
            result.Body.OrderId       = tbl_Order.OrderNo;
            result.Body.OtaOrderId    = tbl_Order.OTAOrderNo;
            result.Body.CertificateNo = tbl_OrderDetail.CertificateNO;
            result.Body.Code          = tbl_OrderDetail.QRcode;
            result.Body.OrderStatus   = "OREDER_SUCCESS";
            return(PageDataResult.Data(result, business.Saltcode.ToString()));
        }
Пример #6
0
        /// <summary>
        /// 创建单个订单基础数据验证
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public DataValidResult ValidDataForOrderSingleCreateRequest(OrderSingleCreateRequest request, OrderSingleCreateResponse response)
        {
            var orderInfo = request.Body.OrderInfo;
            var result    = new DataValidResult {
                Status = false
            };

            if (orderInfo.ContactPerson == null)
            {
                result.Code    = "113001";
                result.Message = "创建订单异常,取票人信息为空";
                return(result);
            }
            if (string.IsNullOrEmpty(orderInfo.ContactPerson.Name))
            {
                result.Code    = "113002";
                result.Message = "创建订单异常,取票人姓名不能为空";
                return(result);
            }
            if (string.IsNullOrEmpty(orderInfo.ContactPerson.Mobile))
            {
                result.Code    = "113003";
                result.Message = "创建订单异常,取票人手机号码不能为空";
                return(result);
            }
            if (!RegexValidation.IsCellPhone(orderInfo.ContactPerson.Mobile))
            {
                result.Code    = "113004";
                result.Message = "创建订单异常,取票人手机号码异常";
                return(result);
            }
            if (!string.IsNullOrEmpty(orderInfo.ContactPerson.CardType))
            {
                switch (orderInfo.ContactPerson.CardType.ToUpper())
                {
                case "ID_CARD":
                    if (!string.IsNullOrEmpty(orderInfo.ContactPerson.CardNo))
                    {
                        if (!RegexValidation.IsIdCard(orderInfo.ContactPerson.CardNo))
                        {
                            result.Code    = "113005";
                            result.Message = "创建订单异常,游客身份证信息输入有误";
                            return(result);
                        }
                    }
                    break;

                case "HUZHAO":
                case "TAIBAO":
                case "GANGAO":
                case "OTHER":
                    break;
                }
            }

            if (string.IsNullOrEmpty(orderInfo.OrderOtaId))
            {
                result.Code    = "113006";
                result.Message = "创建订单异常,OTA订单id不能为空";
                return(result);
            }

            if (orderInfo.OrderQuantity <= 0)
            {
                result.Code    = "113008";
                result.Message = "创建订单异常,订票总数量不能小于1";
                return(result);
            }
            if (!orderInfo.VisitDate.IsDataTime())
            {
                result.Code    = "113009";
                result.Message = "创建订单异常,游玩日期格式不合法";
                return(result);
            }
            if (orderInfo.VisitDate.ToDataTime() < DateTime.Now.Date)
            {
                result.Code    = "113009";
                result.Message = "创建订单异常,游玩日期不合法";
                return(result);
            }
            if (orderInfo.Ticket == null)
            {
                result.Code    = "113015";
                result.Message = "创建订单异常,购买产品的数据不合法";
                return(result);
            }
            if (orderInfo.Ticket.Quantity != orderInfo.OrderQuantity)
            {
                result.Code    = "113011";
                result.Message = "创建订单异常,购买产品的总数量和订票总数量不符";
                return(result);
            }

            if (orderInfo.Ticket.Quantity <= 0)
            {
                result.Code    = "113013";
                result.Message = "创建订单异常,购买产品的游客人数不能小于1";
                return(result);
            }
            if (orderInfo.Ticket.ProductId <= 0)
            {
                result.Code    = "113014";
                result.Message = "创建订单异常,购买产品的id不合法";
                return(result);
            }
            //验证OTA订单id是否已存在
            var tbl_Order = GetOrderBy(request.Body.OrderInfo.OrderOtaId);

            if (tbl_Order != null)
            {
                var tbl_OrderDetail = _orderDetailService.Get(tbl_Order.OrderNo);
                result.Code                 = "000000";
                result.Message              = "成功,重复提交订单";
                response.Body.OrderId       = tbl_Order.OrderNo;
                response.Body.OtaOrderId    = tbl_Order.OTAOrderNo;
                response.Body.CertificateNo = tbl_OrderDetail.CertificateNO;
                response.Body.Code          = tbl_OrderDetail.QRcode;
                response.Body.OrderStatus   = "OREDER_SUCCESS";
                return(result);
            }
            result.Status = true;
            return(result);
        }
Пример #7
0
        /// <summary>
        /// 下单验证基础数据验证
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public DataValidResult ValidDataForVerifyOrderRequest(OrderSingleCreateRequest request)
        {
            var orderInfo = request.Body.OrderInfo;
            var result    = new DataValidResult {
                Status = false
            };

            if (orderInfo.ContactPerson == null)
            {
                result.Code    = "113001";
                result.Message = "创建订单异常,取票人信息为空";
                return(result);
            }
            if (string.IsNullOrEmpty(orderInfo.ContactPerson.Name))
            {
                result.Code    = "113002";
                result.Message = "创建订单异常,取票人姓名不能为空";
                return(result);
            }
            if (string.IsNullOrEmpty(orderInfo.ContactPerson.Mobile))
            {
                result.Code    = "113003";
                result.Message = "创建订单异常,取票人手机号码不能为空";
                return(result);
            }
            if (!RegexValidation.IsCellPhone(orderInfo.ContactPerson.Mobile))
            {
                result.Code    = "113004";
                result.Message = "创建订单异常,取票人手机号码异常";
                return(result);
            }
            if (!string.IsNullOrEmpty(orderInfo.ContactPerson.CardType))
            {
                switch (orderInfo.ContactPerson.CardType.ToUpper())
                {
                case "ID_CARD":
                    if (!string.IsNullOrEmpty(orderInfo.ContactPerson.CardNo))
                    {
                        if (!RegexValidation.IsIdCard(orderInfo.ContactPerson.CardNo))
                        {
                            result.Code    = "113005";
                            result.Message = "创建订单异常,游客身份证信息输入有误";
                            return(result);
                        }
                    }
                    break;

                case "HUZHAO":
                case "TAIBAO":
                case "GANGAO":
                case "OTHER":
                    break;
                }
            }
            if (orderInfo.OrderQuantity <= 0)
            {
                result.Code    = "113008";
                result.Message = "创建订单异常,订票总数量不能小于1";
                return(result);
            }
            if (!orderInfo.VisitDate.IsDataTime())
            {
                result.Code    = "113009";
                result.Message = "创建订单异常,游玩日期格式不合法";
                return(result);
            }
            if (orderInfo.VisitDate.ToDataTime() < DateTime.Now.Date)
            {
                result.Code    = "113009";
                result.Message = "创建订单异常,游玩日期不合法";
                return(result);
            }
            if (orderInfo.Ticket == null)
            {
                result.Code    = "113015";
                result.Message = "创建订单异常,购买产品的数据不合法";
                return(result);
            }
            if (orderInfo.Ticket.Quantity <= 0)
            {
                result.Code    = "113013";
                result.Message = "创建订单异常,购买产品的游客人数不能小于1";
                return(result);
            }
            if (orderInfo.Ticket.ProductId <= 0)
            {
                result.Code    = "113014";
                result.Message = "创建订单异常,购买产品的id不合法";
                return(result);
            }

            result.Status = true;
            return(result);
        }
Пример #8
0
        /// <summary>
        /// 下单验证
        /// </summary>
        private void VerifyOrder()
        {
            OrderSingleCreateRequest request = new OrderSingleCreateRequest
            {
                Body = new OrderSingleCreateBody
                {
                    OrderInfo = new OrderSingleInfo
                    {
                        OrderOtaId     = textBox4.Text,
                        OrderPayStatus = 1,
                        OrderPrice     = 20,
                        OrderQuantity  = 1,
                        Ticket         = new ProductItem(),
                        VisitDate      = textTime.Text,
                        ContactPerson  = new ContactPerson
                        {
                            BuyName  = textBox5.Text,
                            Name     = textBox6.Text,
                            Mobile   = textBox7.Text,
                            CardType = comboBox2.Text,
                            CardNo   = textBox8.Text
                        }
                    }
                }
            };
            List <ProductItem> selectItem = new List <ProductItem>();

            for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                if (dataGridView1.Rows[i].Selected == true)
                {
                    selectItem.Add(new ProductItem
                    {
                        ProductId   = Convert.ToInt32(dataGridView1.Rows[i].Cells[1].Value),
                        ProductName = dataGridView1.Rows[i].Cells[0].Value.ToString(),
                        SellPrice   = Convert.ToDecimal(dataGridView1.Rows[i].Cells[3].Value),
                        Quantity    = Convert.ToInt32(dataGridView1.Rows[i].Cells[4].Value)
                    });

                    var dd = dataGridView1.Rows[i].Cells[1].Value.ToString();
                }
            }
            if (selectItem.Count <= 0)
            {
                MessageBox.Show("请选择你要购买的产品");
                return;
            }
            var ticketInfo = selectItem.FirstOrDefault();

            request.Body.OrderInfo.Ticket        = ticketInfo;
            request.Body.OrderInfo.OrderPrice    = ticketInfo.SellPrice * ticketInfo.Quantity;
            request.Body.OrderInfo.OrderQuantity = ticketInfo.Quantity;

            var result = Class1.VerifyOrder(request);

            if (result.Body != null)
            {
                textBox3.Text  = result.Body.OrderId;
                textBox9.Text  = request.Body.OrderInfo.OrderPrice.ToString();
                textBox10.Text = request.Body.OrderInfo.OrderQuantity.ToString();
            }
            SetMsg("下单验证接口: \r\n" + JsonHelper.ObjectToJson(result));
            textBox4.Text = OrderHelper.GenerateOrderNo();
        }