/// <summary>
        /// 创建订单并支付
        /// </summary>
        /// <param name="orderInfo"></param>
        private PageResult PayOrder(OrderCreateRequest request, Tbl_OTABusiness business)
        {
            OrderInfo           orderInfo = request.Body.OrderInfo;
            OrderCreateResponse result    = new OrderCreateResponse
            {
                Head = HeadResult.V1
            };
            var validResult = _orderService.ValidDataForOrderCreateRequest(request);

            if (!validResult.Status)
            {
                result.Head.Code     = validResult.Code;
                result.Head.Describe = validResult.Message;
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            List <int> productIds  = orderInfo.TicketList.Select(a => a.ProductId).ToList();
            var        ticketIds   = _otaTicketRelationService.GetTicketIds(business.Id, productIds);
            var        tbl_Tickets = _ticketService.CheckIsTicketIds(ticketIds, business.ScenicId, orderInfo.VisitDate.ToDataTime());

            var validDataResult = _orderService.ValidDataForOrderCreateRequest(request, tbl_Tickets);

            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_OrderDetails = _orderDetailService.AddOrderDetail(orderInfo, tbl_Order);

            _orderService.UpdateOrder(tbl_Order, tbl_OrderDetails);
            var tbl_Ticket_Testing = _ticketTestingService.addTicketTestings(tbl_Order, tbl_OrderDetails);

            _ticketService.UpdateTicketBySellCount(tbl_Tickets, tbl_OrderDetails);
            var tbl_SaleLog = _saleLogService.addSaleLog(tbl_Order);

            try
            {
                using (SqlConnection connection = new SqlConnection(DbConfig.TicketConnectionString))
                {
                    connection.Open();
                    var trans = connection.BeginTransaction();
                    SqlBulkInsert.Inert(tbl_Order, connection, trans);
                    SqlBulkInsert.Inert(tbl_OrderDetails, connection, trans);
                    SqlBulkInsert.Inert(tbl_Ticket_Testing, connection, trans);
                    _ticketService.UpdateTicket(tbl_Tickets, connection, trans);
                    SqlBulkInsert.Inert(tbl_SaleLog, connection, trans);
                    trans.Commit();
                }
            }
            catch (Exception ex)
            {
                result.Head.Code     = "113021";
                result.Head.Describe = "订单创建异常,订单创建失败";
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            result.Body = new OrderCreateInfo
            {
                OrderId     = tbl_Order.OrderNo,
                OrderStatus = "OREDER_SUCCESS"
            };
            try
            {
                var sendResult = _smsService.Send(tbl_OrderDetails, tbl_Order.Mobile);
                if (sendResult.Status)
                {
                    result.Head.Code     = "000000";
                    result.Head.Describe = "成功";
                    return(PageDataResult.Data(result, business.Saltcode.ToString()));
                }
                result.Head.Code     = "000001";
                result.Head.Describe = "订单创建成功,发送入园凭证短信失败";
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            catch (Exception ex)
            {
                result.Head.Code     = "000001";
                result.Head.Describe = "订单创建成功,发送入园凭证短信失败";
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
        }
        /// <summary>
        /// 创建订单并支付
        /// </summary>
        /// <param name="orderInfo"></param>
        private PageResult PayOrder(OrderCreateRequest request, Tbl_OTABusiness business)
        {
            OrderInfo           orderInfo = request.Body.OrderInfo;
            OrderCreateResponse result    = new OrderCreateResponse
            {
                Head = HeadResult.V1
            };
            var validResult = _orderService.ValidDataForOrderCreateRequest(request, result);

            if (!validResult.Status)
            {
                result.Head.Code     = validResult.Code;
                result.Head.Describe = validResult.Message;
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            List <int> productIds  = orderInfo.TicketList.Select(a => a.ProductId).ToList();
            var        ticketIds   = _otaTicketRelationService.GetTicketIds(business.Id, productIds);
            var        tbl_Tickets = _ticketService.CheckIsTicketIds(ticketIds, business.ScenicId, orderInfo.VisitDate.ToDataTime());

            var validDataResult = _orderService.ValidDataForOrderCreateRequest(request, tbl_Tickets);

            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_OrderDetails = _orderDetailService.AddOrderDetail(orderInfo, tbl_Order);

            _orderService.UpdateOrder(tbl_Order, tbl_OrderDetails);
            var tbl_Ticket_Testing = _ticketTestingService.addTicketTestings(tbl_Order, tbl_OrderDetails);

            _ticketService.UpdateTicketBySellCount(tbl_Tickets, tbl_OrderDetails);
            var tbl_SaleLog = _saleLogService.addSaleLog(tbl_Order);

            try
            {
                _orderService.BeginTran();
                _orderService.Add(tbl_Order);
                _orderDetailService.Add(tbl_OrderDetails);
                _ticketTestingService.Add(tbl_Ticket_Testing);
                _ticketService.Update(tbl_Tickets);
                _noticeOrderConsumedService.Add(tbl_Order, tbl_OrderDetails, business);
                _orderTravelNoticeService.Add(tbl_Order, 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.Body = new OrderCreateInfo
            {
                OtaOrderId  = tbl_Order.OTAOrderNo,
                OrderId     = tbl_Order.OrderNo,
                OrderStatus = "OREDER_SUCCESS",
                Item        = new List <OrderCreateItem>()
            };
            tbl_OrderDetails = _orderDetailService.GetList(tbl_Order.OrderNo);
            foreach (var row in tbl_OrderDetails)
            {
                result.Body.Item.Add(new OrderCreateItem
                {
                    OtaOrderDetailId = row.OtaOrderDetailId,
                    ProductId        = row.TicketId.ToString(),
                    useDate          = row.ValidityDateStart.ToString("yyyy-MM-dd"),
                    CertificateNo    = row.CertificateNO,
                    quantity         = 500000
                });
            }
            result.Head.Code     = "000000";
            result.Head.Describe = "成功";
            return(PageDataResult.Data(result, business.Saltcode.ToString()));
        }
        /// <summary>
        /// 获取所有产品信息
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public PageResult GetAll(string data, string sign)
        {
            ProductResponse result = new ProductResponse
            {
                Head = HeadResult.V1
            };
            var request = _AuthorizationService.CheckFormatForProductQueryRequest(data);

            if (request == null)
            {
                return(PageDataResult.JsonParsingFailure());
            }
            var business = _AuthorizationService.CheckData(request.Head, data, sign);

            if (business == null)
            {
                return(PageDataResult.SignatureError());
            }
            var validResult = _ticketService.ValidDataForProductQueryRequest(request);

            if (!validResult.Status)
            {
                result.Head.Code     = validResult.Code;
                result.Head.Describe = validResult.Message;
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            var ticketIds = _otaTicketRelationService.GetTicketIds(business.Id);

            List <Tbl_Ticket> list = new List <Tbl_Ticket>();
            int total = 0;

            if (request.Body.Type == (int)ProductQureyType.OneProduct)
            {
                var count = ticketIds.Count(a => a.Equals(request.Body.ProductId));
                if (count > 0)
                {
                    //获取单个产品
                    var ticke = _ticketService.Get(request.Body.ProductId);
                    if (ticke != null)
                    {
                        list.Add(ticke);
                        total = 1;
                    }
                }
                if (list.Count <= 0)
                {
                    result.Head.Code     = "111001";
                    result.Head.Describe = "获取产品异常,产品不存在";
                    return(PageDataResult.Data(result, business.Saltcode.ToString()));
                }
            }
            else if (request.Body.Type == (int)ProductQureyType.NoPage)
            {
                //不分页
                list  = _ticketService.GetTickets(ticketIds, business.ScenicId);
                total = list.Count;
            }
            else
            {
                //分页
                list = _ticketService.GetPageList(ticketIds, business.ScenicId, request.Body.PageSize, request.Body.CurrentPage, out total);
            }
            result.Body = new ProductPage
            {
                Count       = total,
                ProductList = Mapper(list)
            };
            result.Head.Code     = "000000";
            result.Head.Describe = "成功";
            return(PageDataResult.Data(result, business.Saltcode.ToString()));
        }