Ejemplo n.º 1
0
        public static void SavePaySuccessLog(Order.Domain.Order order, string payAccount, string payTradeNo, DateTime payTime, string operatorAccount)
        {
            var keyword = "预订支付";

            LogService.SaveOrderLog(new Log.Domain.OrderLog {
                OrderId     = order.Id,
                Keyword     = keyword,
                Content     = string.Format("支付成功。账号:{0} 流水号:{1} 时间:{2}", payAccount, payTradeNo, payTime.ToString("yyyy-MM-dd HH:mm:ss")),
                Company     = order.Purchaser.CompanyId,
                Account     = operatorAccount,
                Role        = OperatorRole.Purchaser,
                Time        = payTime,
                VisibleRole = OrderRole.Purchaser | OrderRole.Platform | OrderRole.OEMOwner
            });
            LogService.SaveOrderLog(new Log.Domain.OrderLog {
                OrderId     = order.Id,
                Keyword     = keyword,
                Content     = "支付成功",
                Company     = order.Purchaser.CompanyId,
                Account     = operatorAccount,
                Role        = OperatorRole.Purchaser,
                Time        = payTime,
                VisibleRole = OrderRole.Provider | OrderRole.Supplier
            });
        }
Ejemplo n.º 2
0
        public static void SaveSupplierConfirmSuccessfulLog(Order.Domain.Order order, decimal?patPrice, string operatorAccount)
        {
            var keyword    = "确认座位";
            var logContent = "确认成功,并提供座位。" + order.ReservationPNR.ToString();

            if (patPrice.HasValue)
            {
                logContent += " PAT价格:" + patPrice.Value;
            }
            LogService.SaveOrderLog(new Log.Domain.OrderLog {
                OrderId     = order.Id,
                Keyword     = keyword,
                Content     = logContent,
                Company     = order.IsThirdRelation ? order.Supplier.CompanyId : order.Provider.CompanyId,
                Account     = operatorAccount,
                Role        = order.IsThirdRelation ? OperatorRole.Resourcer : OperatorRole.Provider,
                VisibleRole = (order.IsThirdRelation ? OrderRole.Supplier : OrderRole.Provider) | OrderRole.Platform
            });
            LogService.SaveOrderLog(new Log.Domain.OrderLog {
                OrderId     = order.Id,
                Keyword     = keyword,
                Content     = "确认成功",
                Company     = order.IsThirdRelation ? order.Supplier.CompanyId : order.Provider.CompanyId,
                Account     = operatorAccount,
                Role        = order.IsThirdRelation ? OperatorRole.Resourcer : OperatorRole.Provider,
                VisibleRole = order.IsThirdRelation ? OrderRole.Provider | OrderRole.Purchaser : OrderRole.Purchaser | OrderRole.OEMOwner
            });
        }
Ejemplo n.º 3
0
        public static void SaveOutTicketLog(Order.Domain.Order order, TicketNoView ticketNoView, string operatorAccount, string originalTicketType, string orginalOfficeNo)
        {
            var keyword        = "出票";
            var logContentBase = string.Format("出票。订座编码:{0} 出票编码:{1} {2}",
                                               order.ReservationPNR == null ? string.Empty : order.ReservationPNR.ToString(),
                                               order.ETDZPNR == null ? string.Empty : order.ETDZPNR.ToString(),
                                               ticketNoView.Items.Join(",", xx => string.Format("姓名:{0} 票号:{1}", xx.Name, xx.TicketNos.Join("、"))));
            var logContent = logContentBase + string.Format(",客票类型:{0}->{1},Office号{2}->{3}",
                                                            originalTicketType, ticketNoView.TicketType.ToString(),
                                                            orginalOfficeNo, ticketNoView.OfficeNo);

            LogService.SaveOrderLog(new Log.Domain.OrderLog {
                OrderId     = order.Id,
                Keyword     = keyword,
                Content     = logContentBase,
                Company     = order.Provider.CompanyId,
                Account     = operatorAccount,
                Role        = OperatorRole.Provider,
                VisibleRole = OrderRole.Supplier | OrderRole.Purchaser
            });
            LogService.SaveOrderLog(new Log.Domain.OrderLog {
                OrderId     = order.Id,
                Keyword     = keyword,
                Content     = logContent,
                Company     = order.Provider.CompanyId,
                Account     = operatorAccount,
                Role        = OperatorRole.Provider,
                VisibleRole = OrderRole.Provider | OrderRole.Platform
            });
        }
Ejemplo n.º 4
0
        public static void SaveChangeProviderLog(Order.Domain.Order order, string originalProvider, string operatorAccount)
        {
            var keyword = "处理拒绝出票";

            LogService.SaveOrderLog(new Log.Domain.OrderLog {
                OrderId = order.Id,
                Keyword = keyword,
                Content = "换出票方出票。原出票方:" + originalProvider +
                          string.Format(" 返点:{0}% 出票方名称:#{1}|{2}",
                                        (order.IsSpecial ? 0 : order.Provider.Rebate * 100).TrimInvaidZero(), order.Provider.Company.AbbreviateName, order.Provider.Company.CompanyId),
                Company     = Service.Organization.Domain.Platform.Instance.Id,
                Account     = operatorAccount,
                Role        = OperatorRole.Platform,
                VisibleRole = OrderRole.Platform
            });
            LogService.SaveOrderLog(new Log.Domain.OrderLog {
                OrderId     = order.Id,
                Keyword     = keyword,
                Content     = "换出票方出票",
                Company     = Service.Organization.Domain.Platform.Instance.Id,
                Account     = operatorAccount,
                Role        = OperatorRole.Platform,
                VisibleRole = OrderRole.Provider | OrderRole.Supplier | OrderRole.Purchaser | OrderRole.OEMOwner
            });
        }
Ejemplo n.º 5
0
        public static void SaveProduceOrderLog(Order.Domain.Order order)
        {
            var logContent = string.Format("乘机人:{0} 航段:{1}",
                                           order.PNRInfos.Join(",", pnr => pnr.Passengers.Join(",", passenger => passenger.Name)),
                                           order.PNRInfos.Join(",", pnr => pnr.Flights.Join(",", flight => flight.Departure.Code + "-" + flight.Arrival.Code)));
            var log = new Log.Domain.OrderLog {
                OrderId     = order.Id,
                Keyword     = "生成订单",
                Content     = logContent,
                Company     = order.Purchaser.CompanyId,
                Account     = order.Purchaser.OperatorAccount,
                Role        = OperatorRole.Purchaser,
                Time        = order.Purchaser.ProducedTime,
                VisibleRole = OrderRole.Provider | OrderRole.Supplier | OrderRole.Purchaser | OrderRole.OEMOwner
            };

            LogService.SaveOrderLog(log);
            logContent += string.Format(" 返点:{0}% 出票方名称:#{1}|{2}", (order.IsSpecial ? 0 : order.Provider.Rebate * 100).TrimInvaidZero(), order.IsSpecial ? string.Empty : order.Provider.Company.AbbreviateName, order.IsSpecial?Guid.Empty:order.Provider.Company.CompanyId);
            var log2 = new Log.Domain.OrderLog {
                OrderId     = order.Id,
                Keyword     = "生成订单",
                Content     = logContent,
                Company     = order.Purchaser.CompanyId,
                Account     = order.Purchaser.OperatorAccount,
                Role        = OperatorRole.Purchaser,
                Time        = order.Purchaser.ProducedTime,
                VisibleRole = OrderRole.Platform
            };

            LogService.SaveOrderLog(log2);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 子交易补款
        /// </summary>
        internal static bool SubPay(Order.Domain.Order order, Distribution.Domain.Bill.Pay.NormalPayBill payBill)
        {
            var subPayId       = order.Id.ToString() + "1";
            var royaltyRequest = string.Format("交易流水号:{0} 补差账号:{1} 补差金额:{2} 补差号:{3}",
                                               payBill.Tradement.TradeNo, payBill.Platform.Account, payBill.Platform.TotalAmount, subPayId);
            bool   result;
            string royaltyResponse = string.Empty;
            var    repository      = Order.Repository.Factory.CreateRoyaltyRepository();

            try {
#if (DEBUG)
                PoolPay.Service.AccountTradeService.OrderTradeSuppl(decimal.Parse(payBill.Tradement.TradeNo), payBill.Platform.Account, Math.Abs(payBill.Platform.TotalAmount), subPayId, "贴点补差");
                royaltyResponse = "贴点补差成功";
                result          = true;
                repository.Delete(order.Id);
#else
                SubPayRequestProcess subPay = new SubPayRequestProcess(payBill.Tradement.TradeNo,
                                                                       subPayId, Math.Abs(payBill.Platform.TotalAmount), payBill.Platform.Account, "贴点补差");
                if (subPay.Execute())
                {
                    royaltyResponse = "贴点补差成功";
                    result          = true;
                    repository.Delete(order.Id);
                }
                else
                {
                    royaltyResponse = "贴点补差失败," + subPay.Message;
                    result          = false;
                }
#endif
            } catch (Exception ex) {
                result          = false;
                royaltyResponse = "贴点补差失败。原因:" + ex.Message;
                // 保存分润失败信息
                repository.Save(new RoyaltyFailedRecord {
                    OrderId      = order.Id,
                    PayTime      = order.Purchaser.PayTime.HasValue ? order.Purchaser.PayTime.Value : DateTime.Now,
                    ETDZTime     = order.ETDZTime.HasValue ? order.ETDZTime.Value : DateTime.Now,
                    TradeAmount  = payBill.Tradement.Amount,
                    RoyaltyInfo  = "补差金额:" + payBill.Platform.TotalAmount + " 账号:" + payBill.Platform.Account,
                    FailedReason = ex.Message
                });
            }
            // 记录交互日志
            LogService.SaveTradementLog(new TradementLog {
                OrderId  = order.Id,
                Type     = TradementBusinessType.SubPay,
                Request  = royaltyRequest,
                Response = royaltyResponse,
                Time     = DateTime.Now,
                Remark   = "平台贴点补差"
            });
            return(result);
        }
Ejemplo n.º 7
0
 public static void SaveDenySupplyResourceLog(Order.Domain.Order order, string reason, string operatorAccount)
 {
     LogService.SaveOrderLog(new Log.Domain.OrderLog {
         OrderId     = order.Id,
         Keyword     = "提供座位",
         Content     = "拒绝提供座位。原因:" + reason,
         Company     = order.IsThirdRelation ? order.Supplier.CompanyId : order.Provider.CompanyId,
         Account     = operatorAccount,
         Role        = order.IsThirdRelation ? OperatorRole.Resourcer : OperatorRole.Provider,
         VisibleRole = OrderRole.Provider | OrderRole.Supplier | OrderRole.Purchaser | OrderRole.Platform | OrderRole.OEMOwner
     });
 }
Ejemplo n.º 8
0
        /// <summary>
        /// 分润
        /// </summary>
        internal static bool Royalty(Order.Domain.Order order, Distribution.Domain.Bill.Pay.NormalPayBill payBill)
        {
            var royaltyView    = getRolyatiesView(payBill);
            var royaltyRequest = "交易流水号:" + royaltyView.TradeNo + " 分润信息:" + royaltyView.Royalties.Join(",",
                                                                                                        item => string.Format("账号:{0} 金额:{1} 备注:{2}", item.RoyaltyAccountNo, item.RoyaltyAmount, item.Note));
            bool   result;
            string royaltyResponse;
            var    repository = Order.Repository.Factory.CreateRoyaltyRepository();

            try {
#if (DEBUG)
                PoolPay.Service.AccountTradeService.OrderRoyalty(royaltyView);
                royaltyResponse = "分润成功";
                result          = true;
                repository.Delete(order.Id);
#else
                RoyaltyRequestProcess request = new RoyaltyRequestProcess(royaltyView.TradeNo, string.Join("^", royaltyView.Royalties.Select(r => string.Format("{0}|{1}|{2}", r.RoyaltyAccountNo, r.RoyaltyAmount, r.Note))));
                if (request.Execute())
                {
                    royaltyResponse = "分润成功";
                    result          = true;
                    repository.Delete(order.Id);
                }
                else
                {
                    royaltyResponse = "分润失败,原因:" + request.Message;
                    result          = false;
                }
#endif
            } catch (Exception ex) {
                result          = false;
                royaltyResponse = "分润失败。原因:" + ex.Message;
                // 保存分润失败信息
                repository.Save(new RoyaltyFailedRecord {
                    OrderId      = order.Id,
                    PayTime      = order.Purchaser.PayTime.HasValue ? order.Purchaser.PayTime.Value : DateTime.Now,
                    ETDZTime     = order.ETDZTime.HasValue ? order.ETDZTime.Value : DateTime.Now,
                    TradeAmount  = payBill.Tradement.Amount,
                    RoyaltyInfo  = royaltyView.Royalties.Join(",", item => string.Format("账号:{0} 金额:{1}", item.RoyaltyAccountNo, item.RoyaltyAmount)),
                    FailedReason = ex.Message
                });
            }
            // 记录交互日志
            LogService.SaveTradementLog(new TradementLog {
                OrderId  = order.Id,
                Type     = TradementBusinessType.Royalty,
                Request  = royaltyRequest,
                Response = royaltyResponse,
                Time     = DateTime.Now,
                Remark   = "出票后分润"
            });
            return(result);
        }
Ejemplo n.º 9
0
        public static void SaveOrderTimeoutLog(Order.Domain.Order order)
        {
            var log = new Log.Domain.OrderLog()
            {
                OrderId     = order.Id,
                Keyword     = "订单检查",
                Content     = "取消订单。原因:超出支付时限",
                Company     = Service.Organization.Domain.Platform.Instance.Id,
                Account     = "系统",
                Role        = OperatorRole.System,
                VisibleRole = OrderRole.Provider | OrderRole.Supplier | OrderRole.Purchaser | OrderRole.Platform | OrderRole.OEMOwner
            };

            LogService.SaveOrderLog(log);
        }
Ejemplo n.º 10
0
        public static void SaveCancelOrderLog(Order.Domain.Order order, string operatorAccount)
        {
            var log = new Log.Domain.OrderLog()
            {
                OrderId     = order.Id,
                Keyword     = "处理拒绝出票",
                Content     = "取消订单",
                Company     = Service.Organization.Domain.Platform.Instance.Id,
                Account     = operatorAccount,
                Role        = OperatorRole.Platform,
                VisibleRole = OrderRole.Provider | OrderRole.Supplier | OrderRole.Purchaser | OrderRole.Platform | OrderRole.OEMOwner
            };

            LogService.SaveOrderLog(log);
        }
Ejemplo n.º 11
0
        public static void SaveDenyOutticketLog(Order.Domain.Order order, string reason, string operatorAccount)
        {
            var logContent = "拒绝出票。原因:" + reason;
            var log        = new Log.Domain.OrderLog()
            {
                OrderId     = order.Id,
                Keyword     = "出票",
                Content     = logContent,
                Company     = order.Provider.CompanyId,
                Account     = operatorAccount,
                Role        = OperatorRole.Provider,
                VisibleRole = OrderRole.Provider | OrderRole.Supplier | OrderRole.Purchaser | OrderRole.Platform | OrderRole.OEMOwner
            };

            LogService.SaveOrderLog(log);
        }
Ejemplo n.º 12
0
        public static void SaveUpdateCredentialsLog(Order.Domain.Order order, Passenger passenger, string originalCredentials, bool isPlatform, string operatorAccount)
        {
            var logContent = string.Format("修改证件号。乘机人:{0} 原证件号:{1} 新证件号:{2}", passenger.Name, originalCredentials, passenger.Credentials);
            var log        = new Log.Domain.OrderLog()
            {
                OrderId     = order.Id,
                Keyword     = "修改证件号",
                Content     = logContent,
                Company     = isPlatform ? Service.Organization.Domain.Platform.Instance.Id : order.Purchaser.CompanyId,
                Account     = operatorAccount,
                Role        = isPlatform ? OperatorRole.Platform : OperatorRole.Purchaser,
                VisibleRole = OrderRole.Provider | OrderRole.Supplier | OrderRole.Purchaser | OrderRole.Platform | OrderRole.OEMOwner
            };

            LogService.SaveOrderLog(log);
        }
Ejemplo n.º 13
0
 public static void Statistic(Order.Domain.Order order)
 {
     if (order == null || order.IsInterior)
     {
         return;
     }
     try {
         if (order.Status == OrderStatus.Finished)
         {
             if (order.IsSpecial)
             {
                 if (order.IsThirdRelation)
                 {
                     Service.Statistic.OrderStatisticService.SaveSpecialProductSupplyInfo(order.Supplier.CompanyId, getDeparture(order), getArrival(order), getTicketCount(order), true, (order.SupplyTime ?? order.Purchaser.PayTime).Value);
                     var providerETDZSpeed = (order.ETDZTime.Value - (order.SupplyTime.HasValue ? (order.SupplyTime > order.Purchaser.PayTime?order.SupplyTime:order.Purchaser.PayTime):order.Purchaser.PayTime).Value).TotalSeconds;
                     Service.Statistic.OrderStatisticService.SaveGeneralOrderETDZSpeed(order.Provider.CompanyId, order.Id, (int)providerETDZSpeed, order.ETDZTime.Value, getCarrier(order), getTicketType(order));
                 }
                 else
                 {
                     Service.Statistic.OrderStatisticService.SaveSpecialProductSupplyInfo(order.Provider.CompanyId, getDeparture(order), getArrival(order), getTicketCount(order), true, (order.SupplyTime ?? order.Purchaser.PayTime).Value);
                     var providerETDZSpeed = (order.ETDZTime.Value - order.Purchaser.PayTime.Value).TotalSeconds;
                     Service.Statistic.OrderStatisticService.SaveGeneralOrderETDZSpeed(order.Provider.CompanyId, order.Id, (int)providerETDZSpeed, order.ETDZTime.Value, getCarrier(order), getTicketType(order));
                 }
             }
             else
             {
                 var providerETDZSpeed = (order.ETDZTime.Value - order.Purchaser.PayTime.Value).TotalSeconds;
                 Service.Statistic.OrderStatisticService.SaveGeneralOrderETDZSpeed(order.Provider.CompanyId, order.Id, (int)providerETDZSpeed, order.ETDZTime.Value, getCarrier(order), getTicketType(order));
             }
         }
         else if (order.Status == OrderStatus.ConfirmFailed || order.Status == OrderStatus.DeniedWithSupply)
         {
             if (order.IsThirdRelation)
             {
                 Service.Statistic.OrderStatisticService.SaveSpecialProductSupplyInfo(order.Supplier.CompanyId, getDeparture(order), getArrival(order), getTicketCount(order), false, DateTime.Today);
             }
             else
             {
                 Service.Statistic.OrderStatisticService.SaveSpecialProductSupplyInfo(order.Provider.CompanyId, getDeparture(order), getArrival(order), getTicketCount(order), false, DateTime.Today);
             }
         }
     } catch (Exception ex) {
         LogService.SaveExceptionLog(ex, "保存订单处理速度信息");
     }
 }
Ejemplo n.º 14
0
        public static void SaveApplyLog(Order.Domain.Order order, BaseApplyform applyform, string operatorAccount)
        {
            var logContent = string.Format("申请{0}。乘机人:{1} 航段:{2}",
                                           applyform.ToString(), applyform.Passengers.Join(",", item => item.Name), getAppliedFlights(applyform));
            var log = new Log.Domain.OrderLog()
            {
                OrderId     = order.Id,
                ApplyformId = applyform is UpgradeApplyform ? (applyform as UpgradeApplyform).NewOrderId : applyform.Id,
                Keyword     = "退改签申请",
                Content     = logContent,
                Role        = OperatorRole.Purchaser,
                Company     = order.Purchaser.CompanyId,
                Account     = operatorAccount,
                VisibleRole = OrderRole.Provider | OrderRole.Supplier | OrderRole.Purchaser | OrderRole.Platform | OrderRole.OEMOwner
            };

            LogService.SaveOrderLog(log);
        }
Ejemplo n.º 15
0
        public static void SaveRevisePriceLog(Order.Domain.Order order, string operatorAccount)
        {
            var logContent = "修改价格。" + order.PNRInfos.Join(" ",
                                                           pnr => pnr.Flights.Join(" ",
                                                                                   flight => string.Format("修改价格。航段:{0}-{1} 票面价:{2} 机建:{3} 燃油:{4}",
                                                                                                           flight.Departure.Code,
                                                                                                           flight.Arrival.Code,
                                                                                                           flight.Price.Fare,
                                                                                                           flight.Price.AirportFee,
                                                                                                           flight.Price.BAF)));
            var log = new Log.Domain.OrderLog {
                OrderId     = order.Id,
                Keyword     = "修改价格",
                Content     = logContent,
                Company     = Organization.Domain.Platform.Instance.Id,
                Account     = operatorAccount,
                Role        = OperatorRole.Platform,
                VisibleRole = OrderRole.Platform
            };

            LogService.SaveOrderLog(log);
        }
Ejemplo n.º 16
0
        static string getDeparture(Order.Domain.Order order)
        {
            var pnrInfo = order.PNRInfos.First();

            return(pnrInfo.Flights.First().Departure.Code);
        }
Ejemplo n.º 17
0
        static string getCarrier(Order.Domain.Order order)
        {
            var pnrInfo = order.PNRInfos.First();

            return(pnrInfo.Flights.First().Carrier.Code);
        }
Ejemplo n.º 18
0
        static string getArrival(Order.Domain.Order order)
        {
            var pnrInfo = order.PNRInfos.First();

            return(pnrInfo.Flights.First().Arrival.Code);
        }
Ejemplo n.º 19
0
 static Common.Enums.TicketType getTicketType(Order.Domain.Order order)
 {
     return(order.Product.TicketType);
 }
Ejemplo n.º 20
0
 static int getTicketCount(Order.Domain.Order order)
 {
     return(order.PNRInfos.Sum(pnr => pnr.Passengers.Sum(passenger => passenger.Tickets.Count())));
 }