Example #1
0
        /// <summary>
        /// 新增订单
        /// </summary>
        /// <param name="orderInfo"></param>
        /// <param name="tbl_Tickets"></param>
        /// <returns></returns>
        private bool AddOrder(XJ_Order orderInfo, List <Tbl_Ticket> tbl_Tickets)
        {
            var tbl_Order        = _orderService.AddOrder(orderInfo);
            var tbl_OrderDetails = _orderDetailService.AddOrderDetail(orderInfo, tbl_Order);

            _orderService.UpdateOrder(tbl_Order, tbl_OrderDetails);
            var tbl_Ticket_Testing = _ticketTestingService.XJ_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();
                }

                foreach (var row in tbl_OrderDetails)
                {
                    for (var i = 0; i < row.Quantity; i++)
                    {
                        _ticketConsumeService.Add(new Tbl_TicketConsume
                        {
                            OrderNo           = row.OrderNo,
                            OtaOrderNo        = tbl_Order.OTAOrderNo,
                            TicketTestingId   = 0,
                            TicketCategory    = row.TicketCategory,
                            BarCode           = row.BarCode,
                            QRcode            = row.QRcode,
                            OrderDetailNumber = row.Number,
                            OrderSource       = (int)OrderSource.My,
                            SendStatus        = false,
                            CreateTime        = row.ValidityDateEnd,
                            SendCount         = 0,
                            TicketId          = row.TicketId
                        });
                    }
                }
                return(true);
            }
            catch (Exception ex)
            {
                //"订单创建异常,订单创建失败";
                return(false);
            }
        }
Example #2
0
        public void BulkInsertAsync_WhenGivenANull_ThrowsInvalidOperationException()
        {
            //arrange
            var configuration = GetConfigurationStub();
            var sut           = new SqlBulkInsert(configuration);

            //Act and Assert
            Assert.ThrowsAsync <ArgumentNullException>(() => sut.BulkInsertAsync <SampleData>(
                                                           null,
                                                           _targetDbTable));
        }
Example #3
0
        public void BulkInsertAsync_WhenGivenAnEnumerationWithNewData_TheInsertsAllData()
        {
            //arrange
            var configuration = GetConfigurationStub();
            var sut           = new SqlBulkInsert(configuration);


            //Act and Assert
            Assert.DoesNotThrowAsync(() => sut.BulkInsertAsync <SampleData>(
                                         CreateMutipleRecords(1000000),
                                         _targetDbTable));
        }
Example #4
0
        public void BulkInsertAsync_WhenGivenEmptyEnumeration_TheReturnsWithNoInsert()
        {
            //arrange
            var configuration = GetConfigurationStub();

            var sut = new SqlBulkInsert(configuration);
            IList <SampleData> sampleDataList = new List <SampleData>();

            //Act and Assert
            Assert.DoesNotThrowAsync(() => sut.BulkInsertAsync <SampleData>(
                                         sampleDataList,
                                         _targetDbTable));
        }
Example #5
0
        /// <summary>
        /// 创建订单并支付
        /// </summary>
        /// <param name="quickPayment_Object"></param>
        /// <returns></returns>
        public TVMResult <TVMPayInfo> QuickPayment(QuickPayment_Object quickPayment_Object)
        {
            var result = new TVMResult <TVMPayInfo>
            {
                ResultCode = 1,
                SysDate    = DateTime.Now,
                Message    = "订单创建异常,订单创建失败"
            };
            TVMPayInfo payInfo = quickPayment_Object.PayData;

            if (payInfo.postOrder.Count == 0)
            {
                result.Message = "未找到门票信息";
                return(result);
            }
            if (string.IsNullOrEmpty(payInfo.ScannerPayCode))
            {
                result.Message = "支付码未被扫描到,请联系管理员";
                return(result);
            }
            int payType = 0;//道控支付类型 0:支付宝 1:微信

            if (!int.TryParse(payInfo.payType, out payType) || payType < 0 || payType >= 2)
            {
                result.Message = "支付方式不明确,请联系管理员";
                return(result);
            }
            payType = payType == 1 ? (int)PayStatus.Wechat : (int)PayStatus.Alipay;
            var orderInfo = new OrderInfoModel
            {
                Code           = payInfo.ScannerPayCode, //支付码
                PayType        = payType,                //支付类型 1:支付宝 2:微信
                ValidityDate   = DateTime.Now.Date,
                Mobile         = "",
                Linkman        = "",
                TicketCategory = (int)TicketCategoryStatus.QrCodePrintTicket,
                TicketSource   = (int)TicketSourceStatus.ScenicSpot,
                TicketItem     = new List <TicketItemModel>()
            };

            foreach (var row in payInfo.postOrder)
            {
                orderInfo.TicketItem.Add(new TicketItemModel
                {
                    TicketId  = row.ProductID,
                    BookCount = row.ProductCount
                });
            }

            var tbl_Tickets      = _ticketService.GetTickets(payInfo.postOrder.Select(a => a.ProductID).ToList());
            var tbl_Order        = _orderService.AddOrderForNoPay(orderInfo);
            var tbl_OrderDetails = _orderDetailService.AddOrderDetailForQrCodeNoPay(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);


            if (orderInfo.PayType == (int)PayStatus.Wechat)
            {
                var payResult = _wxPayGateway.OrderPay(tbl_Order.TicketName, tbl_Order.TotalAmount, payInfo.ScannerPayCode);
                if (!payResult.Success)
                {
                    result.Message = payResult.Message;
                    return(result);
                }
                tbl_Order.PayTradeNo = payResult.OutTradeNo;
            }
            else if (orderInfo.PayType == (int)PayStatus.Alipay)
            {
                var payResult = _alipayPayGateway.OrderPay(tbl_Order.TicketName, tbl_Order.TotalAmount.ToString(), payInfo.ScannerPayCode);
                if (!payResult.Success)
                {
                    result.Message = payResult.Message;
                    return(result);
                }
                tbl_Order.PayTradeNo = payResult.OutTradeNo;
            }

            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();
                }
                result.ResultCode = 0;
                result.Message    = "成功";
                result.Data       = new TVMPayInfo()
                {
                    payResult        = true,
                    payType          = tbl_Order.PayType.ToString(),
                    PayMsg           = "支付成功",
                    return_trade_no  = tbl_Order.PayTradeNo,
                    m_PayPassOrderID = tbl_Order.OrderNo,
                    merchantCode     = quickPayment_Object.PayData.merchantCode,   //商户id
                    terminalNo       = quickPayment_Object.PayData.terminalNo,     //终端编号
                    TerminalType     = quickPayment_Object.PayData.TerminalType,   //终端类型
                    strPaymoney      = tbl_Order.TotalAmount.ToString(),           //支付金额
                    ScannerPayCode   = quickPayment_Object.PayData.ScannerPayCode, //支付码
                    postOrder        = quickPayment_Object.PayData.postOrder
                };
                return(result);
            }
            catch (Exception ex)
            {
                if (orderInfo.PayType == (int)PayStatus.Wechat && !string.IsNullOrEmpty(tbl_Order.PayTradeNo))
                {
                    var isCancel = _wxPayGateway.Cancel(tbl_Order.PayTradeNo);
                    if (!isCancel)
                    {
                        result.Message = "系统异常,订单创建失败,请联系景区人员进行退款!";
                    }
                }
                else if (orderInfo.PayType == (int)PayStatus.Alipay && !string.IsNullOrEmpty(tbl_Order.PayTradeNo))
                {
                    var isCancel = _alipayPayGateway.Cancel(tbl_Order.PayTradeNo, tbl_Order.TotalAmount.ToString());
                    if (!isCancel)
                    {
                        result.Message = "系统异常,订单创建失败,请联系景区人员进行退款!";
                    }
                }
            }
            return(result);
        }
        /// <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()));
            }
        }