public OrderFacadeService( OrderService orderService, TicketService ticketService, OrderDetailService orderDetailService, SaleLogService saleLogService, TicketTestingService ticketTestingService, OtaTicketRelationService otaTicketRelationService, OtaBusinessService otaBusinessService, RefundDetailService refundDetailService, TicketConsumeService ticketConsumeService) { _orderService = orderService; _ticketService = ticketService; _orderDetailService = orderDetailService; _saleLogService = saleLogService; _ticketTestingService = ticketTestingService; _otaTicketRelationService = otaTicketRelationService; _otaBusinessService = otaBusinessService; _refundDetailService = refundDetailService; _orderIssuedsSoapClient = new XJ_OrderIssuedsSoapClient(); _ticketConsumeService = ticketConsumeService; }
/// <summary> /// 同步OTA订单 /// </summary> public void SynchronizingOtaOrder() { XJ_OrderIssuedsSoapClient client = new XJ_OrderIssuedsSoapClient(); string timeStamp = DateTime.Now.GetTimeStamp(); var sign = Md5HashHelper.HashPassword(_merCode + _key + timeStamp); //订单类型(4 - OTA订单, 5 - 旅行社订单) var order = client.GetOrderIssuedLine(_merCode, timeStamp, sign, "", "", 4); var resultData = JsonHelper.JsonToObject <ResultData>(order); if (resultData.IsTrue && resultData.ResultCode == "200") { var orderModel = JsonConvert.DeserializeObject <List <OtaOrderModel> >(resultData.ResultJson); var orderList = orderModel.Take(200).OrderByDescending(a => a.CreateTime).ToList(); var channelCodeList = orderList.Select(a => a.ChannelCode).Distinct().ToList(); var businessList = _otaBusinessService.GetList(channelCodeList, 1); var productCodeList = orderList.Select(a => a.ProductCode).Distinct().ToList(); var tickets = _ticketService.GetListByBusiness(productCodeList); foreach (var row in orderList) { //判断分销商是否存在 var business = businessList.FirstOrDefault(a => a.Code == row.ChannelCode); if (business == null) { continue; } var ticket = tickets.FirstOrDefault(a => a.Code == row.ProductCode); //判断产品是否存在 if (ticket == null) { continue; } XJ_Order orderInfo = PopulateOTAOrder(row, business, ticket); OrderOtaAction(tickets, row, orderInfo); } } }