/// <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); } }
/// <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="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())); } }