Beispiel #1
0
        public void SaveExternalPolicyCopyTest()
        {
            ExternalPolicyView testPolicy = new ExternalPolicyView()
            {
                Platform         = PlatformType.Yeexing,
                Provider         = new Guid("4BA6539C-9072-4DFB-AC6E-67CAD72FEBC4"),
                Id               = "201314" + (new Random()).Next(1, 10000).ToString(),
                TicketType       = TicketType.B2B,
                RequireChangePNR = false,
                Condition        = "11111",
                ETDZSpeed        = 5,
                WorkStart        = new Time(0, 0, 0),
                WorkEnd          = new Time(23, 59, 0),
                ScrapStart       = new Time(0, 0, 0),
                ScrapEnd         = new Time(23, 59, 0),
                OriginalRebate   = 0.12m,
                Rebate           = 0.1m,
                ParValue         = 2000m,
                OfficeNo         = "KMG216",
                RequireAuth      = false
            };



            OrderRepository target   = new OrderRepository(dbOperator);
            bool            expected = true;
            bool            actual;

            actual = target.SaveExternalPolicyCopy(testPolicy, 0);
            Assert.AreEqual(expected, actual);
        }
Beispiel #2
0
        public RequestResult <ExternalOrderView> Produce(decimal orderId, OrderView orderView, string pnrContent, string patContent, ExternalPolicyView policy)
        {
            RequestResult <ExternalOrderView> result;
            var request  = string.Empty;
            var response = string.Empty;

            try {
                var signValue = new Dictionary <string, string>
                {
                    { "pnrcontent", GetPnrParameter(pnrContent) },
                    { "bigpnr", orderView.PNR.BPNR },
                    { "benefitid", policy.Id },
                    { "linker", Platform.Contact },
                    { "linktel", Platform.ContactPhone },
                    { "splitbenefitid", (policy as _517NaPolicyView).SubId },
                    { "patcontent", GetPnrParameter(patContent) }
                };
                request = GetRequest("create_order_pnrcontent", signValue);
                var platform = new _517Na.BenefitInterface {
                    Url             = Platform.Address,
                    Timeout         = Platform.Timeout,
                    RequestEncoding = Platform.Encoding
                };
                response = platform.InterfaceFacade(request);
                result   = parseProduceResponse(response);
            } catch (Exception ex) {
                LogService.SaveExceptionLog(ex, "517Na生成订单");
                result = new RequestResult <ExternalOrderView> {
                    Success    = false,
                    ErrMessage = "系统错误,请联系平台"
                };
                response = ex.Message;
            }
            SaveRequestLog(response, request, "生成订单");
            return(result);
        }
Beispiel #3
0
 public RequestResult <ExternalOrderView> Produce(decimal orderId, OrderView orderView, ExternalPolicyView policy)
 {
     throw new NotImplementedException();
 }
Beispiel #4
0
        private IEnumerable <ExternalPolicyView> parsePolicies(IEnumerable <_51bookMatchPolicy.wsPolicyData> policyDatas, ExternalPolicyFilter filter)
        {
            var result = new List <ExternalPolicyView>();

            if (policyDatas != null)
            {
                var lowestRebate   = filter.B3BMaxRebate + Platform.Setting.RebateBalance;
                var platformDeduct = Platform.Setting.Deduct;
                var provider       = Platform.Setting.Provider;
                foreach (var item in policyDatas)
                {
                    // 返点过滤
                    var rebate = (decimal)item.commisionPoint;
                    if (rebate < lowestRebate)
                    {
                        continue;
                    }
                    TicketType?ticketType = null;
                    if (item.policyType == "B2B")
                    {
                        ticketType = TicketType.B2B;
                    }
                    else if (item.policyType == "BSP")
                    {
                        ticketType = TicketType.BSP;
                    }
                    // 过滤客票类型
                    if (filter.TicketType.HasValue)
                    {
                        if (ticketType.HasValue)
                        {
                            if (ticketType.Value != filter.TicketType.Value)
                            {
                                continue;
                            }
                        }
                        else
                        {
                            ticketType = filter.TicketType;
                        }
                    }

                    try {
                        var policy = new ExternalPolicyView {
                            Platform        = Platform.PlatformInfo,
                            Provider        = provider,
                            OriginalContent = GetModelString(item),
                            Id             = item.policyId.ToString(),
                            OriginalRebate = rebate
                        };
                        // 政策类型
                        if (item.productType == 1)
                        {
                            policy.PolicyType = PolicyType.Normal;
                        }
                        else if (item.productType == 2)
                        {
                            policy.PolicyType = PolicyType.Bargain;
                        }
                        else
                        {
                            continue;
                        }
                        // 客票类型
                        policy.TicketType = ticketType.HasValue ? ticketType.Value : TicketType.BSP;
                        // 处理平台留点
                        policy.Rebate = rebate > platformDeduct ? rebate - platformDeduct : 0;
                        // 是否需要换编码
                        policy.RequireChangePNR = item.needSwitchPNR == 1;
                        // 工作时间
                        Izual.Time workStartTime;
                        Izual.Time workEndTime;
                        parseTimeZone(item.workTime, out workStartTime, out workEndTime);
                        policy.WorkStart = workStartTime;
                        policy.WorkEnd   = workEndTime; //TODO   没有看到文档或交互数据实例, 退废票时间暂未加载
                        // 废票时间
                        Izual.Time scrapStartTime;
                        Izual.Time scrapEndTime;
                        parseTimeZone(item.vtWorkTime, out scrapStartTime, out scrapEndTime);
                        policy.ScrapStart = scrapStartTime;
                        policy.ScrapEnd   = scrapEndTime;
                        // 出票速度
                        var etdzSpeed      = 180;
                        var etdzSpeedMatch = Regex.Match(item.ticketSpeed, "((?<mm>\\d*)分钟)?(?<ss>\\d*)秒?");
                        if (etdzSpeedMatch.Success)
                        {
                            var mmValue = etdzSpeedMatch.Groups["mm"] == null
                                              ? string.Empty
                                              : etdzSpeedMatch.Groups["mm"].Value;
                            var mm = 0;
                            int.TryParse(mmValue, out mm);
                            var ss = 0;
                            int.TryParse(etdzSpeedMatch.Groups["ss"].Value, out ss);
                            if (mm * 60 + ss > 0)
                            {
                                etdzSpeed = mm * 60 + ss;
                            }
                        }
                        policy.ETDZSpeed = etdzSpeed;
                        // 出票方Office号
                        policy.OfficeNo = item.supplyOfficeNo;
                        // 是否需要授权
                        policy.RequireAuth = !string.IsNullOrWhiteSpace(policy.OfficeNo);
                        // 政策备注
                        policy.Condition = policy.Remark = item.comment;
                        result.Add(policy);
                    } catch (Exception ex) {
                        LogService.SaveExceptionLog(ex, "解析51book政策数据");
                    }
                }
            }
            return(result);
        }