public void TestBatchRemoney() { var BaseRiskModellist = new List <BaseRiskModel>(); var baseRiskModel = new BaseRiskModel() { ArriveCode = "SHA", Cabin = "Y", DepartCode = "PEK", DepartureTime = DateTime.Now, EnterpriseID = 1089, EnterpriseName = "新测试企业五", EtermType = 0, EtermStatus = 1, EtermSuccessRate = 0, FlightNo = "CA1234", OrderAmount = 100, TicketNum = "9995783618889", PayCenterCode = "CSSX41080209", PayCenterName = "苏测试分销一", PersonName = "朱明", TicketPrice = 1200, TicketTime = DateTime.Now, TravelBatchId = "636403794183510244", TravelRiskType = 1, PNR = "QWERTY", WhiteFailRate = 0, WhiteSuccessRate = 0 }; BaseRiskModellist.Add(baseRiskModel); var ManageRisk = new ManageRiskModel() { AccountPeriod = "61", BackReapalNo = "100000000001678", EnterpriseID = 1089, TravelBatchId = "636403794183510244", FactoringEmail = "*****@*****.**", EnterpriseName = "新测试企业五", FactoringInterestRate = 0.018m, FactoringName = "测试保理", FactoringReapalNo = "100000000001024", InterestRate = 0, PayCenterCode = "CSSX41080209", PayCenterName = "苏测试分销一", UserFactoringId = 1, UserName = "******", baseRiskModelList = BaseRiskModellist }; new RemoneyService(ManageRisk).Execute(); }
/// <summary> /// 重构函数 /// </summary> public RemoneyBaseService(ManageRiskModel ManageRiskModel) { ManageRiskModelBase = ManageRiskModel; }
public static void check(string str) { ManageRiskModel model = JsonConvert.DeserializeObject <ManageRiskModel>(str); new CheckEtermService(model).Execute(); }
/// <summary> /// 构造函数 /// </summary> /// <param name="model"></param> public CheckEnterpriseWhiteListService(ManageRiskModel model) : base() { ManageRisk = model; }
//保存数据并写入队列 private bool SaveOrderData() { var travelBatchList = new List <TravelBatch>(); _manageRiskModels.Foreach(item => { if (0 < item.Value.Count) { var enterprise = _enterpriseWhiteLists.FirstOrDefault(t => t.EnterpriseWhiteListID == item.Key); var defaultModel = item.Value.FirstOrDefault(); var travelRisk = _travelRisks.ContainsKey((int)item.Key) ? _travelRisks[(int)item.Key] : null; var travelBatchModel = new TravelBatch(); travelBatchModel.TravelBatchId = defaultModel.TravelBatchId; travelBatchModel.PayCenterCode = Parameter.PayCenterCode; travelBatchModel.PayCenterName = Parameter.PayCenterName; travelBatchModel.EnterpriseId = (int)item.Key; travelBatchModel.EnterpriseName = defaultModel.EnterpriseName; travelBatchModel.TravelRiskType = defaultModel.TravelRiskType; travelBatchModel.TravelRiskState = 0; //黑屏比例 travelBatchModel.EtermSuccessRate = defaultModel.EtermSuccessRate; travelBatchModel.EtermFailRate = defaultModel.EtermFailRate; //白屏比例 travelBatchModel.WhithSuccessRate = null != travelRisk ? travelRisk.WhiteSuccessRate : 0; travelBatchModel.WhithFailRate = null != travelRisk ? travelRisk.WhiteFailRate : 0; travelBatchModel.CreateTime = DateTime.Now; travelBatchModel.TotalCount = item.Value.Count(); travelBatchModel.TranslationState = 0; travelBatchModel.TotalAmount = item.Value.Sum(t => t.OrderAmount); travelBatchModel.PayCenterCode = Parameter.PayCenterCode; travelBatchModel.PayCenterName = Parameter.PayCenterName; travelBatchModel.UserFactoringId = (int)_userFactoring.UserFactoringId; travelBatchModel.FactoringName = _userFactoring.FactoringName; travelBatchModel.FactoringEmail = _userFactoring.FactoringEmail; travelBatchModel.FactoringReapalNo = _userFactoring.FactoringReapalNo; travelBatchModel.InterestRate = _userFactoring.InterestRate ?? 0; travelBatchModel.FactoringInterestRate = _userAccount.FactoringInterestRate ?? 0; travelBatchModel.AccountPeriod = null != enterprise ? Int32.Parse(enterprise.AccountPeriod) : 0; travelBatchModel.EnterpriseId = (int)item.Key; travelBatchModel.EnterpriseName = null != enterprise ? enterprise.EnterpriseName : ""; travelBatchModel.UserName = _userAccount.UserName; travelBatchModel.BackReapalNo = _userAccount.ReapalMerchantId; travelBatchModel.TravelBatchId = item.Value.FirstOrDefault().TravelBatchId; travelBatchList.Add(travelBatchModel); } }); //批次信息保存 var result = TravelBatchRep.Insert(travelBatchList); if (result < 1) { this.Result.Data = "批次信息保存失败,请联系相关人员!"; return(false); } //订单信息 var models = _manageRiskModels.Values.SelectMany(x => x).ToList(); var travelBatchOrder = Mapper.Map <List <BaseRiskModel>, List <TravelBatchOrder> >(models); travelBatchOrder.ForEach(i => i.TicketTime = Convert.ToDateTime(Convert.ToDateTime(i.TicketTime).ToString("yyyy-MM-dd HH:mm:ss"))); travelBatchOrder.ForEach(i => i.CreateTime = Convert.ToDateTime(Convert.ToDateTime(i.CreateTime).ToString("yyyy-MM-dd HH:mm:ss"))); travelBatchOrder.ForEach(i => i.DepartureTime = Convert.ToDateTime(Convert.ToDateTime(i.DepartureTime).ToString("yyyy-MM-dd HH:mm:ss"))); travelBatchOrder.ForEach(i => i.UUId = ""); travelBatchOrder.ForEach(i => i.MatchResult = ""); LoggerFactory.Instance.Logger_Info("插入实体:" + JsonConvert.SerializeObject(travelBatchOrder), "TravelOrderImportService"); //保存机票信息 result = TravelBatchOrderRep.Insert(travelBatchOrder); if (result < 1) { this.Result.Data = "机票信息保存失败,请联系相关人员!"; return(false); } //写入队列 _manageRiskModels.Foreach(item => { if (0 < item.Value.Count) { var enterprise = _enterpriseWhiteLists.FirstOrDefault(t => t.EnterpriseWhiteListID == item.Key); //写入实体 var manageRiskModel = new ManageRiskModel() { baseRiskModelList = item.Value, PayCenterCode = Parameter.PayCenterCode, PayCenterName = Parameter.PayCenterName, UserFactoringId = (int)_userFactoring.UserFactoringId, FactoringName = _userFactoring.FactoringName, FactoringEmail = _userFactoring.FactoringEmail, FactoringReapalNo = _userFactoring.FactoringReapalNo, InterestRate = _userFactoring.InterestRate ?? 0, FactoringInterestRate = _userAccount.FactoringInterestRate ?? 0, AccountPeriod = null != enterprise ? enterprise.AccountPeriod : "", EnterpriseID = item.Key, EnterpriseName = null != enterprise ? enterprise.EnterpriseName : "", UserName = _userAccount.UserName, BackReapalNo = _userAccount.ReapalMerchantId, TravelBatchId = item.Value.FirstOrDefault().TravelBatchId, }; manageRiskModel.baseRiskModelList = item.Value; new RabbitMQClient().SendMessage(JsonConvert.SerializeObject(manageRiskModel)); } }); //写入缓存 var ticketNums = travelBatchOrder.Select(t => t.TicketNo).ToList(); var list = GetCacheTickets(); list.AddRange(ticketNums); Cache.Put(strKey, JsonConvert.SerializeObject(list)); return(true); }
/// <summary> /// 构造函数 /// </summary> /// <param name="model"></param> public CheckEtermService(ManageRiskModel model) : base() { ManageRisk = model; }
/// <summary> ///重构函数 /// </summary> /// <param name="ManageRiskResultModelList"></param> public RemoneyService(ManageRiskModel ManageRiskResultModel) : base(ManageRiskResultModel) { ManageRiskModel = ManageRiskResultModel; }
public void XHCheckTicketResult(ManageRiskModel ManageRisk, List <TicketDetailResult> ResultList, string uuid, bool IsOK) { string TravelBatchId = ManageRisk.TravelBatchId; long EnterpriseID = ManageRisk.EnterpriseID; int TravelRiskType = ManageRisk.baseRiskModelList[0].TravelRiskType; string strOrderPrice = ""; //票价验证失败票号集合 string strOrderPersonName = ""; //黑屏规则验证成功票号集合 var travelRisk = new TravelRiskRep().GetTravelRiskByEnterpriseID(new TravelRisk() { EnterpriseID = Convert.ToInt32(ManageRisk.EnterpriseID), PayCenterCode = ManageRisk.PayCenterCode }); if (IsOK)//小何接口验证成功 { //修改票号集合的小何验证结果状态 ManageRisk.baseRiskModelList.ForEach(i => i.CheckStatus = 1); //根据批次号和企业编号 修改数据库票号集合的小何验证结果状态 new TravelBatchOrderRep().UpdateTravelBatchOrder(ManageRisk.TravelBatchId, ManageRisk.EnterpriseID, "", "", 0, 0, "", 0, 1, 0, ""); if (ManageRisk.baseRiskModelList[0].EtermType != 1)//包含小何接口 { foreach (var item in ManageRisk.baseRiskModelList) { foreach (var result in ResultList) { if (item.TicketNum == result.ticketno) { //验证订单金额 if (Convert.ToDecimal(result.fare) * travelRisk.TicketMultiple < item.OrderAmount)//刨除票价验证失败订单(需取表字段配置) { strOrderPrice += "'" + item.TicketNum + "',"; } else if (item.TravelRiskType != 1) //验价成功 且 风控规则不是纯白名单验证的 验证姓名 { if (item.PersonName.Trim() == result.name.Trim()) { strOrderPersonName += "'" + item.TicketNum + "',"; item.BlackResultState = 1; //设置黑屏验证结果为成功 } } break; } } } } //票价验证失败 if (!string.IsNullOrWhiteSpace(strOrderPrice)) { strOrderPrice = strOrderPrice.Substring(0, strOrderPrice.Length - 1); ManageRisk.baseRiskModelList.RemoveAll(i => strOrderPrice.Contains(i.TicketNum)); //记录验证票价失败的订单 new TravelBatchOrderRep().UpdateTravelBatchOrder(TravelBatchId, EnterpriseID, strOrderPrice, "", 0, 0, "", 0, 0, 0, "票价验证失败(xh)"); //记录验证票价失败的订单日志 LoggerFactory.Instance.Logger_Debug("XH验证票价失败的票号:" + strOrderPrice, "XHCheckTicketNotifyService"); //清除缓存 new RemoneyNotifyService().ModifyTicketCache(new List <string>(strOrderPrice.Substring(1, strOrderPrice.Length - 2).Split("','"))); } //姓名验证 if (!string.IsNullOrWhiteSpace(strOrderPersonName)) { strOrderPersonName = strOrderPersonName.Substring(0, strOrderPersonName.Length - 1); //修改黑屏验证状态 new TravelBatchOrderRep().UpdateTravelBatchOrder(TravelBatchId, EnterpriseID, strOrderPersonName, "", 0, 1, "", 0, 0, 0, ""); //修改黑屏验证状态日志 LoggerFactory.Instance.Logger_Debug("修改黑屏验证状态为成功:" + strOrderPrice, "XHCheckTicketNotifyService"); ManageRisk.baseRiskModelList.FindAll(i => !strOrderPersonName.Contains(i.TicketNum)).ForEach(i => i.FailReason = "姓名验证失败(xh)|"); new TravelBatchOrderRep().UpdateTravelBatchOrder(TravelBatchId, EnterpriseID, "", strOrderPersonName, 0, 1, "", 0, 0, 0, "姓名验证失败(xh)|"); } if (TravelRiskType != 0 && ManageRisk.baseRiskModelList.Count > 0)//判断风控规则不是 纯黑屏 { //调用白名单验证 new CheckEnterpriseWhiteListService(ManageRisk).Execute(); } //调用王帅核算比率返现接口 LoggerFactory.Instance.Logger_Debug("调用王帅核算比率返现接口:" + JsonConvert.SerializeObject(ManageRisk), "XHCheckTicketNotifyService"); try { new RemoneyService(ManageRisk).Execute(); } catch (Exception ex) { LoggerFactory.Instance.Logger_Debug("返现报错:" + ex.Message, "XHCheckTicketNotifyService"); } } else { switch (ManageRisk.baseRiskModelList[0].EtermType) { case 0: //0小何验证 //记录验证票价失败的订单(全部) ManageRisk.baseRiskModelList.ForEach(i => i.FailReason = "票价验证失败(xh)|"); new TravelBatchOrderRep().UpdateTravelBatchOrder(TravelBatchId, EnterpriseID, "", "", 0, 0, "", 0, 0, 0, "票价验证失败(xh)|"); //记录验证票价失败的订单日志(全部) LoggerFactory.Instance.Logger_Debug("验证票价失败的订单(全部),批次号:" + TravelBatchId + " ,企业ID:" + EnterpriseID.ToString(), "XHCheckTicketNotifyService"); break; case 1: //黑屏 //记录黑屏配置错误日志 LoggerFactory.Instance.Logger_Debug("黑屏配置错误:" + ManageRisk.baseRiskModelList[0].EtermType.ToString(), "XHCheckTicketNotifyService"); break; case 2: //小何+黑屏 //调用黑屏验证 new CheckEtermService(ManageRisk).CheckEterm(); break; default: //记录风控规则不正确 LoggerFactory.Instance.Logger_Debug("风控规则错误:" + ManageRisk.baseRiskModelList[0].EtermType.ToString(), "XHCheckTicketNotifyService"); break; } } }