Ejemplo n.º 1
0
        //保存数据并写入队列
        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);
        }