Ejemplo n.º 1
0
        public void Send(List <SendAppMessageModel> sendAppMessageModels)
        {
            string isServer = AppSettingsHelper.GetAppSettings(AppSettingsEnum.IsServer);

            foreach (var item in sendAppMessageModels)
            {
                string title = "差旅订单出票提醒";
                //CustomerInfoEntity customerInfoEntity = _customerInfoDal.GetCustomerByExpression(x => x.Cid == item.Cid);
                //CorporationEntity corporationEntity = _corporationDal.GetContactInfoByExpression(x => x.CorpId == customerInfoEntity.CorpID);
                string content = item.SendContent;
                //得到公司名称

                string url = string.Format(
                    "http://192.168.1.117/orderprocess/Flt_order.asp?orderid={0}",
                    item.OrderId);
                if (isServer == "T")
                {
                    url = string.Format("http://192.168.1.188/orderprocess/Flt_order.asp?orderid={0}",
                                        item.OrderId);
                }
                string aurl = "<a href=\"" + url + "\">" + item.OrderId + "</a>";
                content = content.Replace(item.OrderId.ToString(), aurl);

                bool result = EmailHelper.SendEmail("", title, null, null, content, item.Email);
                item.SendResult = result.ToString();
            }
            _sendAppMessageFactory.SendAppMessageStatuAll(sendAppMessageModels);
            // LogHelper.WriteLog("机票出票邮件推送:result=" + result + "||||||" + html.ToString() + "||||||toEmail=" + toEmail + "|||||orderId=" + orderId, "EmailLog");
        }
Ejemplo n.º 2
0
 public void MojoryLoginOut(string token)
 {
     if (token == AppSettingsHelper.GetAppSettings(AppSettingsEnum.OAToken))
     {
         return;
     }
     _deleteTokenServiceBll.DeleteToken(token);
 }
Ejemplo n.º 3
0
        public static async Task Connect()
        {
            string HubConnectionUrl = AppSettingsHelper.GetAppSettings("HubConnection");

            connectionSignalR = new HubConnectionBuilder()
                                .WithUrl(HubConnectionUrl)
                                .Build();
            await connectionSignalR.StartAsync();
        }
Ejemplo n.º 4
0
        public ResponseBaseViewModel <TraRequestConfirmResponseViewModel> GetRequestConfirm([FromBody] TraRequestConfirmViewModel request)
        {
            #region 生产环境,测试帐号不许出票,直接返回
            string testCid = AppSettingsHelper.GetAppSettings(AppSettingsEnum.TestCid);//生产环境,测试帐号不许出票
            if (testCid == this.GetCid().ToString())
            {
                return(new ResponseBaseViewModel <TraRequestConfirmResponseViewModel>()
                {
                    Flag = new ResponseCodeViewModel()
                    {
                        Code = 0
                    },
                    Data = new TraRequestConfirmResponseViewModel()
                    {
                        OrderId = request.OrderId,
                        TransactionId = request.TransactionId
                    }
                });
            }
            #endregion
            factory = new RequestConfirmFactory();
            domain  = factory.CreateDomainObj();
            TraRequestConfirmModel rcModel = new TraRequestConfirmModel()
            {
                transactionid = request.TransactionId,
                orderid       = request.OrderId,
                reqtoken      = DateTime.Now.ToString("yyyyMMddHHmmss"),
                isasync       = (string.IsNullOrEmpty(request.IsAsync) ? "Y" : request.IsAsync),
            };
            IOrderDomainFactory orderDomainFactory = new OrderDomainFactory();
            IOrderDomain        traOrderDomain     = orderDomainFactory.CreateAddModOrderDomainObj();

            domain.ModComfireEvent += traOrderDomain.DoModComfireEvent;
            var obj = domain.DoRequestConfirm(rcModel);
            domain.ModComfireEvent -= traOrderDomain.DoModComfireEvent;

            var uiModel = new ResponseBaseViewModel <TraRequestConfirmResponseViewModel>();
            var flag    = new ResponseCodeViewModel();
            uiModel.Flag = flag;
            TraRequestConfirmResponseViewModel tmodel = new TraRequestConfirmResponseViewModel()
            {
                OrderId  = obj.orderid,
                ReqToken = obj.reqtoken,

                TransactionId = obj.transactionid
            };

            uiModel.Data = tmodel;
            if (obj.code == 100)
            {
                uiModel.Flag.Code = 0;
            }

            return(uiModel);
        }
        public TraOrderCancelResponseModel RequestCancelOrder(int orderId)
        {
            TraInterFaceOrderEntity traInterFaceOrderEntity =
                _traInterFaceOrderDal.Query <TraInterFaceOrderEntity>(n => n.OrderId == orderId.ToString())
                .FirstOrDefault();

            if (traInterFaceOrderEntity == null)
            {
                return(null);
            }

            int status = traInterFaceOrderEntity.Status;

            if (status == (int)OrderTypeEnum.OrderCancel)
            {
                return(null);
            }

            TraOrderCancelResponseModel responseModel = null;
            string isServer = AppSettingsHelper.GetAppSettings(AppSettingsEnum.IsServer);

            if (isServer == "T")
            {
                responseModel = _requestCancelOrderBll.RequestCancelOrder(new TraOrderCancelModel()
                {
                    orderid       = orderId.ToString(),
                    transactionid = traInterFaceOrderEntity.Transactionid
                });
            }
            else
            {
                responseModel = new TraOrderCancelResponseModel()
                {
                    success = true
                };
            }


            if (responseModel.success)
            {
                traInterFaceOrderEntity.Status = (int)OrderTypeEnum.OrderCancel;
                _traInterFaceOrderDal.Update <TraInterFaceOrderEntity>(traInterFaceOrderEntity, new[] { "Status" });

                _traOrderOperateDal.Insert <TraOrderOperateEntity>(new TraOrderOperateEntity()
                {
                    AfterOperateStatus = (int)OrderTypeEnum.OrderCancel,
                    InterfaceId        = traInterFaceOrderEntity.InterfaceId,
                    Operate            = (int)OrderTypeEnum.OrderCancel,
                    OperateTime        = traInterFaceOrderEntity.CreateTime,
                    BeforOperateStatus = status
                });
            }

            return(responseModel);
        }
Ejemplo n.º 6
0
        public async Task <HttpResponseMessage> UploadFile()
        {
            try
            {
                if (!Request.Content.IsMimeMultipartContent())
                {
                    throw new Exception("上传格式不是multipart/form-data");
                }

                string url  = AppSettingsHelper.GetAppSettings(AppSettingsEnum.UploadFile);
                string root = HttpContext.Current.Server.MapPath(url);

                var provider = new MultipartFormDataStreamProvider(root);

                await Request.Content.ReadAsMultipartAsync(provider);

                int maxSize = Convert.ToInt32(AppSettingsHelper.GetAppSettings(AppSettingsEnum.MaxFileSize));


                string filePaths = string.Empty;
                foreach (var file in provider.FileData)
                {
                    string   orfilename = file.Headers.ContentDisposition.FileName.TrimStart('"').TrimEnd('"');
                    FileInfo fileinfo   = new FileInfo(file.LocalFileName);
                    if (fileinfo.Length <= 0)
                    {
                        throw new Exception("请选择上传文件");
                    }

                    if (fileinfo.Length > (maxSize * 1024 * 1024))
                    {
                        throw new Exception("上传文件大小超过限制");
                    }

                    string fileExt = orfilename.Substring(orfilename.LastIndexOf('.'));
                    fileinfo.CopyTo(Path.Combine(root, fileinfo.Name + fileExt), true);
                    //filePaths.Add("~//UploadFile//" + fileinfo.Name + fileExt);
                    filePaths += fileinfo.Name + fileExt + "|";
                    fileinfo.Delete(); //删除原文件
                }
                if (string.IsNullOrEmpty(filePaths))
                {
                    return(Request.CreateResponse(HttpStatusCode.BadGateway, ""));
                }

                var response = Request.CreateResponse(HttpStatusCode.OK);
                response.Content = new StringContent(filePaths, Encoding.UTF8);

                return(response);
            }
            catch (Exception ex)
            {
                return(Request.CreateResponse(HttpStatusCode.BadGateway, ""));
            }
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 判断请求是否来自线上
        /// </summary>
        /// <param name="api"></param>
        /// <returns></returns>
        public static bool CheckIsFromOnline(this ApiController api)
        {
            bool   isFromOnline = false;
            string token        = api.Request.Headers.GetValues("MojoryToken").First();

            if (token != AppSettingsHelper.GetAppSettings(AppSettingsEnum.OAToken))
            {
                isFromOnline = true;
            }
            return(isFromOnline);
        }
Ejemplo n.º 8
0
        public ResponseBaseViewModel <TraOrderConfirmResponseViewModel> GetOrderConfirm([FromBody] TraOrderConfirmViewModel request)
        {
            #region 生产环境,测试帐号不许出票,直接返回
            string testCid = AppSettingsHelper.GetAppSettings(AppSettingsEnum.TestCid);//生产环境,测试帐号不许出票
            if (testCid == this.GetCid().ToString())
            {
                return(new ResponseBaseViewModel <TraOrderConfirmResponseViewModel>()
                {
                    Flag = new ResponseCodeViewModel()
                    {
                        Code = 0
                    },
                    Data = new TraOrderConfirmResponseViewModel()
                    {
                        OrderID = request.OrderID,
                        OrderNumber = request.TransactionID
                    }
                });
            }
            #endregion

            factory = new OrderConfirmFactory();
            domain  = factory.CreateDomainObj();
            TraOrderConfirmModel orderConfirmModel = new TraOrderConfirmModel()
            {
                orderid       = request.OrderID,
                transactionid = request.TransactionID
            };

            IOrderDomainFactory orderDomainFactory = new OrderDomainFactory();
            IOrderDomain        orderDomain        = orderDomainFactory.CreateUpdateOrderDomainObj();

            domain.OrderConfirmEvent += orderDomain.DoOrderConfirmEvent;
            var obj = domain.DoOrderConfirm(orderConfirmModel);
            domain.OrderConfirmEvent -= orderDomain.DoOrderConfirmEvent;

            var uiModel = new ResponseBaseViewModel <TraOrderConfirmResponseViewModel>();
            var flag    = new ResponseCodeViewModel();
            uiModel.Flag = flag;
            TraOrderConfirmResponseViewModel model = new TraOrderConfirmResponseViewModel()
            {
                OrderID     = obj.orderid,
                OrderNumber = obj.ordernumber
            };
            uiModel.Flag.Message = obj.msg;
            uiModel.Data         = model;
            if (obj.code == 100)
            {
                uiModel.Flag.Code = 0;
            }

            return(uiModel);
        }
Ejemplo n.º 9
0
        public bool RegisterCustomer(RegisterViewModel model)
        {
            var result = AutoMapperHelper.DoMap <RegisterViewModel, RegisterCustomerModel>(model);

            EmailHelper.SendEmail("",
                                  "公司名称:" + model.CorpName + ";"
                                  + "联系人:" + model.Connector + ";"
                                  + "联系电话:" + model.ConnectTel + ";"
                                  + "公司规模:" + model.CorpScale + ";"
                                  + "行业:" + model.Industry + ";"
                                  + "差旅体量:" + model.TripScale + ";"
                                  , null, null, "", AppSettingsHelper.GetAppSettings(AppSettingsEnum.ReginsterSendEmail));
            return(_registrerCustomer.Add(result));
        }
        public MemcachedManager()
        {
            string MemcachedUrl = AppSettingsHelper.GetAppSettings("MemcachedUrl");

            if (string.IsNullOrEmpty(MemcachedUrl))
            {
                throw new Exception("appsettings.json > AppSettings > \"MemcachedUrl\": \"127.0.0.1:11211\" bulunamadı.");
            }

            config = new MemcachedClientConfiguration(new LoggerFactory(), new MemcachedClientOptions());
            config.AddServer(MemcachedUrl);
            config.Protocol = MemcachedProtocol.Binary;
            client          = new MemcachedClient(new LoggerFactory(), config);
        }
        static RedisConnectionFactory()
        {
            var RedisCacheUrl = AppSettingsHelper.GetAppSettings("RedisCacheUrl");

            lazyConnection = new Lazy <ConnectionMultiplexer>(() =>
            {
                if (string.IsNullOrEmpty(RedisCacheUrl))
                {
                    throw new Exception("appsettings.json > AppSettings > \"RedisCacheUrl\": \"localhost:6379\" bulunamadı.");
                }

                return(ConnectionMultiplexer.Connect(RedisCacheUrl));
            });
        }
Ejemplo n.º 12
0
        public bool AddMojoryOpinion(AppOpinionRequestViewModel request)
        {
            AppOpinionDomainModel appOpinionDoaminModel = _addAppOpinionServiceBll.AddOpinion(new AppOpinionModel()
            {
                AppOpinion = request.AppOpinion,
                AppType    = 0,
                CreateCid  = request.Cid
            });
            string formartContent = "公司:" + appOpinionDoaminModel.ContactName + "<br/>" + "客户:" + appOpinionDoaminModel.CustomerName + "<br/>" + request.AppOpinion;
            Task   task           = new Task(() =>
            {
                EmailHelper.SendEmail("", "APP意见反馈", null, null, formartContent, AppSettingsHelper.GetAppSettings(AppSettingsEnum.AppOptionEmailTo));
            });

            task.Start();
            return(true);
        }
Ejemplo n.º 13
0
        public string GetPnrNo(int orderid, string email)
        {
            string isServer = AppSettingsHelper.GetAppSettings(AppSettingsEnum.IsServer);

            if (isServer != "T")//如果不是生产环境,不定位
            {
                return(string.Empty);
            }
            FltOrderEntity orderEntity = _fltOrderDal.Find <FltOrderEntity>(orderid);

            if ((orderEntity.ProcessStatus & 1) == 1)//如果已经定位,则不再定位
            {
                return(string.Empty);
            }
            string pnrNo = _doPnrNoBll.DoPnrNo(orderid, orderEntity.CreateOid);

            if (!string.IsNullOrEmpty(pnrNo))
            {
                //定位成功之后,设置已定位
                orderEntity.ProcessStatus = orderEntity.ProcessStatus + 1;
                _fltOrderDal.Update(orderEntity, new string[] { "ProcessStatus" });
                _fltOrderLogDal.Insert(new FltOrderLogEntity()
                {
                    OrderId = orderEntity.OrderId,
                    LogTime = DateTime.Now,
                    LogType = "修改订单",
                    Oid     = "sys",
                    Remark  = "线上订单,设置已定位" + pnrNo
                });
            }
            else
            {
                if (!string.IsNullOrEmpty(email))
                {
                    string url = string.Format("http://192.168.1.188/orderprocess/Flt_order.asp?orderid={0}",
                                               orderid);
                    string content = string.Format("订单号:<a  href='{0}' >{1}</a>", url, orderid);
                    new TaskFactory().StartNew(() =>
                    {
                        EmailHelper.SendEmail("", "国内机票定位异常", null, null, content, email);
                    });
                }
            }
            return(pnrNo);
        }
        public string Post(TEntity data)
        {
            string returnValue = "";

            try
            {
                var rabbitMQService = new RabbitMQService();

                var queueName = AppSettingsHelper.GetAppSettings(_queueName);

                using (var connection = rabbitMQService.CreateConnection())
                {
                    using (var channel = connection.CreateModel())
                    {
                        channel.QueueDeclare(queue: queueName,
                                             durable: true,
                                             exclusive: false,
                                             autoDelete: false,
                                             arguments: null);

                        var queueDate = JsonConvert.SerializeObject(data);
                        var body      = Encoding.UTF8.GetBytes(queueDate);

                        var properties = channel.CreateBasicProperties();
                        properties.Persistent = true;

                        channel.BasicPublish(exchange: "",
                                             routingKey: queueName,
                                             basicProperties: properties,
                                             body: body);

                        returnValue = $"Registration was sent to the {queueName} queue.";
                        Console.WriteLine(returnValue);
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return($"[x] Sent {returnValue}");
        }
Ejemplo n.º 15
0
        public ResponseBaseViewModel <CheckAppVisionResponseViewModel> CheckAllAppVision([FromBody] CheckAppVisionRequestViewModel request)
        {
            string appVision = request.Vision.Split('.')[0];

            if (string.IsNullOrEmpty(appVision))
            {
                throw new Exception("版本号格式不正确");
            }

            int vision = Convert.ToInt32(AppSettingsHelper.GetAppSettings(AppSettingsEnum.AllowAppVision));

            ResponseBaseViewModel <CheckAppVisionResponseViewModel> v =
                new ResponseBaseViewModel <CheckAppVisionResponseViewModel>();

            if (vision > Convert.ToInt32(appVision))
            {
                v.Flag = new ResponseCodeViewModel()
                {
                    Code = 0, MojoryToken = this.GetToken()
                };
                v.Data = new CheckAppVisionResponseViewModel()
                {
                    Code       = (int)MojoryApiResponseCode.NoAllowVision,
                    AndroidUrl = AppSettingsHelper.GetAppSettings(AppSettingsEnum.VisionAndroidUrl),
                    IosUrl     = AppSettingsHelper.GetAppSettings(AppSettingsEnum.VisionIosUrl),
                    Message    = AppSettingsHelper.GetAppSettings(AppSettingsEnum.VisionMessage)
                };
            }
            else
            {
                v.Flag = new ResponseCodeViewModel()
                {
                    Code = 0, MojoryToken = this.GetToken()
                };
                v.Data = new CheckAppVisionResponseViewModel()
                {
                    Code = 0
                };
            }

            return(v);
        }
Ejemplo n.º 16
0
        /// <summary>
        /// 访问抢票接口
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public GrabTicketResponseModel RunGrabTicketInterface(GrabTicketRequestModel request)
        {
            try
            {
                string postData = JsonConvert.SerializeObject(request);
                postData = "jsonStr=" + postData;
                LogHelper.WriteLog("请求抢票接口:" + postData, "TraGrabTicketCallBack");
                string isServer = AppSettingsHelper.GetAppSettings(AppSettingsEnum.IsAllowTrainGrabTicket);
                if (isServer != "T")
                {
                    throw new Exception("测试");
                }
                string responseData = PostHelper.PostUrl(Url, postData, Encoding.UTF8);
                LogHelper.WriteLog("抢票接口同步响应:" + responseData, "TraGrabTicketCallBack");
                if (string.IsNullOrEmpty(responseData))
                {
                    return new GrabTicketResponseModel()
                           {
                               msg     = "请求接口失败",
                               success = false,
                               code    = "-1"
                           }
                }
                ;

                GrabTicketResponseModel responseModel =
                    JsonConvert.DeserializeObject <GrabTicketResponseModel>(responseData);
                return(responseModel);
            }
            catch (Exception ex) //直接捕获一下异常,不返回到前端
            {
                return(new GrabTicketResponseModel()
                {
                    msg = ex.Message,
                    success = false,
                    code = "-1"
                });
            }
        }
Ejemplo n.º 17
0
        static void Main(string[] args)
        {
            Connect().Wait();

            var rabbitMQService = new RabbitMQService();

            var queueName = AppSettingsHelper.GetAppSettings("ProductQueue");

            using (var connection = rabbitMQService.CreateConnection())
            {
                using (var channel = connection.CreateModel())
                {
                    //Connect().Wait();
                    channel.QueueDeclare(queue: queueName,
                                         durable: true,
                                         exclusive: false,
                                         autoDelete: false,
                                         arguments: null);

                    var consumer = new EventingBasicConsumer(channel);

                    consumer.Received += (model, ea) =>
                    {
                        var     body    = ea.Body;
                        var     data    = Encoding.UTF8.GetString(body);
                        Product product = JsonConvert.DeserializeObject <Product>(data);

                        connectionSignalR.InvokeAsync("PushNotify", product);
                        Console.WriteLine(" Received message: " + product.Name + " : " + product.Price);
                    };

                    channel.BasicConsume(queue: queueName,
                                         autoAck: true,
                                         consumer: consumer);

                    Console.ReadLine();
                }
            }
        }
Ejemplo n.º 18
0
        public TraOrderSubmitResponseModel RequestHoldSeat(TraAddOrderModel addModel)
        {
            TraOrderSubmitResponseModel responseModel = null;
            string isServer = AppSettingsHelper.GetAppSettings(AppSettingsEnum.IsServer);

            if (isServer == "T")
            {
                //请求接口
                #region 封装接口请求参数
                TraOrderSubmitModel model = new TraOrderSubmitModel()
                {
                    orderid            = addModel.Order.OrderId.ToString(),
                    checi              = addModel.OrderDetailList[0].TrainNo,
                    from_station_code  = addModel.OrderDetailList[0].StartCode,
                    from_station_name  = addModel.OrderDetailList[0].StartName,
                    to_station_code    = addModel.OrderDetailList[0].EndCode,
                    to_station_name    = addModel.OrderDetailList[0].EndName,
                    train_date         = addModel.OrderDetailList[0].StartTime.ToString("yyyy-MM-dd"),
                    passengers         = new List <TraOrderSubmitPassengerModel>(),
                    LoginUserName      = "",
                    LoginUserPassword  = "",
                    is_accept_standing = addModel.IsAcceptStanding,
                    is_choose_seats    = addModel.IsChooseSeats,
                    choose_seats       = addModel.ChooseSeats
                };


                model.passengers = new List <TraOrderSubmitPassengerModel>();
                foreach (var p in addModel.OrderDetailList[0].PassengerList)
                {
                    TraOrderSubmitPassengerModel pp = new TraOrderSubmitPassengerModel();
                    pp.passengersename      = p.Name.Replace("/", " ");
                    pp.passportseno         = p.CardNo;
                    pp.passporttypeseidname = p.CardNoType.ToDescription();
                    if (p.CardNoType == CardTypeEnum.Certificate)
                    {
                        pp.passporttypeseid = "1";
                    }
                    else if (p.CardNoType == CardTypeEnum.HongKongAndMacaoPass)
                    {
                        pp.passporttypeseid = "C";
                    }
                    else if (p.CardNoType == CardTypeEnum.Passport)
                    {
                        pp.passporttypeseid = "B";
                    }
                    else if (p.CardNoType == CardTypeEnum.TaiwanEntryPermit || p.CardNoType == CardTypeEnum.MTP)
                    {
                        pp.passporttypeseid     = "G";
                        pp.passporttypeseidname = "台湾通行证";
                    }
                    //pp.passporttypeseid = ((int) p.CardNoType).ToString();
                    pp.piaotype     = "1";
                    pp.ticket_no    = "";
                    pp.piaotypename = "成人票";
                    if (addModel.OrderDetailList[0].PlaceGrade != "无座")
                    {
                        pp.zwcode = TrainTypeEnum.GetTypeCodeByName(addModel.OrderDetailList[0].PlaceGrade);
                        pp.zwname = addModel.OrderDetailList[0].PlaceGrade;
                    }
                    else
                    {
                        //如果当前是无座则根据当前车次选择最低座位
                        List <string> cTypeList = new List <string>()
                        {
                            "G", "C", "D"
                        };
                        if (!string.IsNullOrEmpty(model.checi) && model.checi.Length > 0 &&
                            cTypeList.Contains(model.checi.Substring(0, 1).ToUpper()))
                        {
                            pp.zwcode = TrainTypeEnum.GetTypeCodeByName("二等座");
                            pp.zwname = "二等座";
                        }
                        else
                        {
                            pp.zwcode = TrainTypeEnum.GetTypeCodeByName("硬座");
                            pp.zwname = "硬座";
                        }
                    }
                    pp.cxin  = "";
                    pp.price = addModel.OrderDetailList[0].FacePrice.ToString("0.00");
                    model.passengers.Add(pp);
                }
                #endregion
                responseModel = _requestHoldSeatBll.RequestHoldSeatInterface(model);
            }
            else
            {
                responseModel = new TraOrderSubmitResponseModel()
                {
                    success = true, orderid = "Test" + DateTime.Now.ToString("yyyyMMddHHmmssfff")
                };
            }
            #region 请求成功后操作
            if (responseModel.success)//请求占位成功
            {
                int count =
                    _traInterFaceOrderDal.Query <TraInterFaceOrderEntity>(a => a.Transactionid == responseModel.orderid,
                                                                          true).Count();
                if (count == 0)//如果没有当前接口的订单号,则插入该条信息
                {
                    TraInterFaceOrderEntity traInterFaceOrderEntity = new TraInterFaceOrderEntity
                    {
                        CreateTime    = DateTime.Now,
                        OrderId       = addModel.Order.OrderId.ToString(),
                        Status        = (int)OrderTypeEnum.ApplyHoldSeat,
                        Transactionid = responseModel.orderid
                    };
                    traInterFaceOrderEntity =
                        _traInterFaceOrderDal.Insert <TraInterFaceOrderEntity>(traInterFaceOrderEntity);

                    _traOrderOperateDal.Insert <TraOrderOperateEntity>(new TraOrderOperateEntity()
                    {
                        AfterOperateStatus = (int)OrderTypeEnum.MakingTicket,
                        InterfaceId        = traInterFaceOrderEntity.InterfaceId,
                        Operate            = (int)OrderTypeEnum.ApplyHoldSeat,
                        OperateTime        = traInterFaceOrderEntity.CreateTime
                    });
                }
            }
            #endregion

            return(responseModel);
        }
 public RabbitMQService()
 {
     messageQueueHostName = AppSettingsHelper.GetAppSettings("MessageQueueHostName");
 }
Ejemplo n.º 20
0
        public TokenResultModel CheckToken(HttpRequestMessage request)
        {
            TokenResultModel resultModel = new TokenResultModel();
            string           token       = "";

            try
            {
                token = request.Headers.GetValues("MojoryToken").First();
            }
            catch
            {
                //如果头部没有token 从参数中获取token
                if (string.IsNullOrEmpty(token))
                {
                    string url   = request.RequestUri.ToString();
                    Regex  regex = new Regex("token=(?<token>.+?)&");
                    token = regex.Match(url).Groups["token"].Value;
                }
            }


            /*
             * 如果传入的token是给定的token数据,则直接返回
             */
            if (token == AppSettingsHelper.GetAppSettings(AppSettingsEnum.OAToken))
            {
                resultModel.Code  = TokenResultEnum.Allow;
                resultModel.Token = token;

                IEnumerable <string> cidValuesList;
                if (request.Headers.TryGetValues("Cid", out cidValuesList))
                {
                    resultModel.Cid = Convert.ToInt32(cidValuesList.FirstOrDefault());
                }
                IEnumerable <string> oidValuesList;
                if (request.Headers.TryGetValues("Oid", out oidValuesList))
                {
                    resultModel.Oid = oidValuesList.FirstOrDefault();
                }
                else
                {
                    throw new Exception("请传入操作员id");
                }
                return(resultModel);
            }


            IEnumerable <string> valuesList;
            string fromSource = "O";

            if (request.Headers.TryGetValues("OrderSource", out valuesList))
            {
                fromSource = valuesList.FirstOrDefault();
            }

            TokenModel tokenModel = new TokenModel();

            //1.判断是否存在Token
            if (string.IsNullOrEmpty(token))//1.1 不存在,则生成Token,返回登录首页
            {
                tokenModel.Value = new TokenValueModel {
                    Status = TokenResultEnum.Initial, FromSource = fromSource
                };
                resultModel.Code  = TokenResultEnum.Initial;
                resultModel.Token = _tokenBll.SetToken(tokenModel);
                return(resultModel);
            }
            //2.根据传入的Token获取Redis中对应的信息
            tokenModel = _tokenBll.GetToken(token);
            if (tokenModel == null)//2.1 如果不存在Redis中,则生成初始Token
            {
                tokenModel = new TokenModel {
                    Value = new TokenValueModel {
                        Status = TokenResultEnum.Initial, FromSource = fromSource
                    }
                };
                resultModel.Code  = TokenResultEnum.Initial;
                resultModel.Token = _tokenBll.SetToken(tokenModel);
                return(resultModel);
            }

            if (tokenModel.Value.Status == TokenResultEnum.Initial)//2.2.2 Token为初始状态
            {
                resultModel.Code  = TokenResultEnum.Initial;
                resultModel.Token = token;
                return(resultModel);
            }
            if (tokenModel.Value.Status == TokenResultEnum.NoAllow)//2.2.2 Token为禁止访问Api
            {
                resultModel.Code  = TokenResultEnum.NoAllow;
                resultModel.Token = token;
                return(resultModel);
            }
            //2.2.3 判断当前传入的设备号是和保存的设备Id一致
            //TODO:如果新增个性化后,这个功能就需要根据个性化修改了
            string appClientId = string.Empty;

            if (request.Headers.TryGetValues("AppClientId", out valuesList))
            {
                appClientId = valuesList.FirstOrDefault();
            }
            if (!string.IsNullOrEmpty(appClientId) && tokenModel.Value.Cid.HasValue)
            {
                CustomerAppClientIdEntity customerAppClientIdEntity =
                    base.Context.Set <CustomerAppClientIdEntity>()
                    .FirstOrDefault(
                        n => n.Cid == tokenModel.Value.Cid.Value && n.ClientId.ToUpper() == appClientId.ToUpper());
                if (customerAppClientIdEntity == null)
                {
                    _tokenBll.DeleteToken(token);
                    resultModel.Code  = TokenResultEnum.MobileChanged;
                    resultModel.Token = token;
                    return(resultModel);
                }
            }

            //2.2.4 允许访问Api
            resultModel.Code  = TokenResultEnum.Allow;
            resultModel.Token = token;
            resultModel.Cid   = tokenModel.Value.Cid;

            //2.2.5 更新Token有效时间
            _tokenBll.ExpireToken(token, 24);
            return(resultModel);
        }
Ejemplo n.º 21
0
        /// <summary>
        /// 检查Token
        /// </summary>
        /// <returns></returns>
        public TokenResultModel CheckToken(HttpRequestMessage request)
        {
            TokenResultModel resultModel = new TokenResultModel();
            string           token       = request.Headers.GetValues("MojoryToken").First();

            //如果头部没有token 从参数中获取token
            if (string.IsNullOrEmpty(token))
            {
                string url   = request.GetRequestContext().Url.ToString();
                Regex  regex = new Regex("token=(?<token>.+?)&");
                token = regex.Match(url).Groups["token"].Value;
            }

            /*
             * 如果传入的token是给定的token数据,则直接返回
             */
            if (token == AppSettingsHelper.GetAppSettings(AppSettingsEnum.OAToken))
            {
                resultModel.Code  = TokenResultEnum.Allow;
                resultModel.Token = token;

                IEnumerable <string> cidValuesList;
                if (request.Headers.TryGetValues("Cid", out cidValuesList))
                {
                    resultModel.Cid = Convert.ToInt32(cidValuesList.FirstOrDefault());
                }
                IEnumerable <string> oidValuesList;
                if (request.Headers.TryGetValues("Oid", out oidValuesList))
                {
                    resultModel.Oid = oidValuesList.FirstOrDefault();
                }
                else
                {
                    throw new Exception("请传入操作员id");
                }
                return(resultModel);
            }

            TokenModel tokenModel = new TokenModel();

            //1.判断是否存在Token
            if (string.IsNullOrEmpty(token))//1.1 不存在,则生成Token,返回登录首页
            {
                tokenModel.Value = new TokenValueModel {
                    Status = TokenResultEnum.Initial
                };
                resultModel.Code  = TokenResultEnum.Initial;
                resultModel.Token = SetToken(tokenModel);
                return(resultModel);
            }
            //2.根据传入的Token获取Redis中对应的信息
            tokenModel = GetToken(token);
            if (tokenModel == null)//2.1 如果不存在Redis中,则生成初始Token
            {
                tokenModel = new TokenModel {
                    Value = new TokenValueModel {
                        Status = TokenResultEnum.Initial
                    }
                };
                resultModel.Code  = TokenResultEnum.Initial;
                resultModel.Token = SetToken(tokenModel);
                return(resultModel);
            }

            if (tokenModel.Value.Status == TokenResultEnum.Initial)//2.2.2 Token为初始状态
            {
                resultModel.Code  = TokenResultEnum.Initial;
                resultModel.Token = token;
                return(resultModel);
            }
            if (tokenModel.Value.Status == TokenResultEnum.NoAllow)//2.2.2 Token为禁止访问Api
            {
                resultModel.Code  = TokenResultEnum.NoAllow;
                resultModel.Token = token;
                return(resultModel);
            }
            //2.2.3 允许访问Api
            resultModel.Code  = TokenResultEnum.Allow;
            resultModel.Token = token;
            resultModel.Cid   = tokenModel.Value.Cid;
            //2.2.4 更新Token有效时间
            ExpireToken(token, 24);
            return(resultModel);
        }
Ejemplo n.º 22
0
        /// <summary>
        /// 创建机票订单
        /// </summary>
        /// <param name="orderViewModel"></param>
        /// <returns></returns>
        public AddOrderResponseViewModel AddDomesticOrderApplicationService(AddOrderRequestViewModel orderViewModel)
        {
            string        oidTemp       = orderViewModel.CreateOid;
            int           orderid       = 0;
            AddOrderModel addOrderModel = Mapper.Map <AddOrderRequestViewModel, AddOrderModel>(orderViewModel);

            //0.获取客户信息服务
            addOrderModel.Customer = _getCustomerServiceBll.GetCustomerByCid(orderViewModel.Cid);
            if (!string.IsNullOrEmpty(addOrderModel.Customer.CorpID))
            {
                CorporationModel corporationModel = _getCorpServiceBll.GetCorp(addOrderModel.Customer.CorpID);
                if (!addOrderModel.IsPrint.HasValue)
                {
                    addOrderModel.IsPrint = corporationModel.IsPrint ?? 0;
                }
                if (!string.IsNullOrEmpty(corporationModel.ResponsibleOid) && orderViewModel.OrderSource != "O")
                {
                    addOrderModel.CreateOid = corporationModel.ResponsibleOid;
                }
            }


            //1.获取乘机人的联系人Id对应的乘客信息
            List <int> contactList = addOrderModel.PassengerList.Select(n => n.Contactid ?? 0).ToList();

            addOrderModel.PassengerCustomerList = _getCorpPassengerCustomerServiceBll.GetCorpPassengerCustomer(contactList);

            OperatorModel operatorModel = _getOperatorServiceBll.GetOperatorByOid(addOrderModel.CreateOid);


            //2.创建订单服务
            using (var transaction = this.Context.Database.BeginTransaction())
            {
                try
                {
                    orderid = _addOrderServiceBll.AddDomesticOrder(addOrderModel);

                    #region 送审

                    if (orderid > 0)
                    {
                        SubmitCorpAduitOrderModel submitCorpAduitOrder = new SubmitCorpAduitOrderModel()
                        {
                            OrderInfoList = new List <SubmitCorpAduitOrderDetailModel>()
                            {
                                new SubmitCorpAduitOrderDetailModel()
                                {
                                    OrderId   = orderid,
                                    OrderType = OrderSourceTypeEnum.Flt
                                }
                            },
                            PolicyId        = addOrderModel.CorpPolicyId,
                            AduitConfigId   = addOrderModel.CorpAduitId,
                            Source          = orderViewModel.OrderSource,
                            SubmitCid       = orderViewModel.Cid,
                            SubmitOid       = oidTemp,
                            IsViolatePolicy =
                                (addOrderModel.FlightList.Find(n => !string.IsNullOrEmpty(n.CorpPolicy)) != null
                                    ? true
                                    : false),
                            OrderType = OrderSourceTypeEnum.Flt
                        };
                        _submitCorpAduitOrderServiceBll.Submit(submitCorpAduitOrder);
                    }

                    #endregion

                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw;
                }
            }
            string PNRstr  = "";                                                        //获取后邮件中使用
            string testCid = AppSettingsHelper.GetAppSettings(AppSettingsEnum.TestCid); //生产环境,测试帐号不许定位
            if (testCid != orderViewModel.Cid.ToString())
            {
                //3.调取pnr定位服务
                PNRstr = _getPnrNoServiceBll.GetPnrNo(orderid, operatorModel?.Email);
            }
            //4.发送提醒邮件
            new TaskFactory().StartNew(() =>
            {
                string mail               = operatorModel.Email;
                string corporationName    = addOrderModel.PassengerCustomerList[0].Corporation.CorpName;
                string operatorName       = addOrderModel.Cname;
                string dport              = addOrderModel.FlightList[0].Dport;
                string aport              = addOrderModel.FlightList[0].Aport;
                string aDate              = addOrderModel.FlightList[0].TackoffTime.ToString();
                string bDate              = addOrderModel.FlightList[0].ArrivalsTime.ToString();
                StringBuilder mailContent = new StringBuilder();
                mailContent.Append("<b>订单生成提醒:<b/>");
                mailContent.Append("<br/>");
                mailContent.Append("[" + corporationName + "] 已生成订单:" + orderid + ",请差旅顾问及时处理!");
                mailContent.Append("<br/>");
                mailContent.Append("联系人姓名:" + addOrderModel.Cname + "");
                mailContent.Append("<br/>");
                mailContent.Append("行程:" + dport + " - " + aport + "");
                mailContent.Append("<br/>");
                mailContent.Append("起飞时间:" + aDate + "");
                mailContent.Append("<br/>");
                mailContent.Append("抵达时间:" + bDate + "");
                mailContent.Append("<br/>");
                mailContent.Append("<b>下单时间:" + DateTime.Now + ",请及时关注~<b/>");
                if (!string.IsNullOrEmpty(mail))
                {
                    bool flag = EmailHelper.SendEmail("", "订单生成提醒", null, null, mailContent.ToString(), mail);
                }
            });

            return(new AddOrderResponseViewModel()
            {
                OrderId = orderid
            });
        }
Ejemplo n.º 23
0
        /// <summary>
        /// 审批结果通知
        /// </summary>
        /// <param name="sendAppMessageModel"></param>
        private void GetAuditResultMessage(SendAppMessageModel sendAppMessageModel)
        {
            if (sendAppMessageModel.OrderType == OrderSourceTypeEnum.AduitOrder)
            {
                CorpAduitOrderEntity corpAduitOrderEntity =
                    _corpAduitOrderDal.Find <CorpAduitOrderEntity>(sendAppMessageModel.OrderId);

                if (corpAduitOrderEntity == null)
                {
                    return;
                }

                List <CorpAduitOrderDetailEntity> corpAduitOrderDetailEntities =
                    _corpAduitOrderDetailDal.Query <CorpAduitOrderDetailEntity>(
                        n => n.AduitOrderId == sendAppMessageModel.OrderId, true).ToList();
                if (corpAduitOrderDetailEntities == null || corpAduitOrderDetailEntities.Count == 0)
                {
                    return;
                }

                string orderType = corpAduitOrderDetailEntities[0].OrderType.ValueToDescription <OrderSourceTypeEnum>();
                string orderId   = corpAduitOrderDetailEntities[0].OrderId.ToString();
                if (sendAppMessageModel.SendType == SendAppMessageTypeEnum.AuditResultNotice)
                {
                    if (corpAduitOrderEntity.Status == (int)CorpAduitOrderStatusEnum.J)
                    {
                        sendAppMessageModel.SendContent = string.Format("您的{0}{1}{2}被审批人驳回,请您确认", orderType,
                                                                        (orderType.Contains("申请") ? "" : "订单"), orderId);
                    }
                    else if (corpAduitOrderEntity.Status == (int)CorpAduitOrderStatusEnum.F)
                    {
                        sendAppMessageModel.SendContent = string.Format("您的{0}{1}{2}已完成审批,准备为您{3}", orderType,
                                                                        (orderType.Contains("申请") ? "" : "订单"), orderId, (orderType.Contains("退票") ? "退票" : "出票"));

                        if (!orderType.Contains("退票") && orderType.Contains("机票") &&
                            sendAppMessageModel.SendAppMessageType == SendAppMessageTypeEnum.SendRunPrintFltTicketEmail)
                        {
                            FltOrderEntity fltOrderEntity =
                                base.Context.Set <FltOrderEntity>().Find(Convert.ToInt32(orderId));
                            if (fltOrderEntity != null)
                            {
                                string oid = string.IsNullOrEmpty(fltOrderEntity.CreateOid)
                                    ? "sys"
                                    : fltOrderEntity.CreateOid.ToUpper();

                                OperatorEntity operatorEntity =
                                    base.Context.Set <OperatorEntity>().Where(n =>
                                                                              n.Oid.ToUpper() == oid).FirstOrDefault();

                                sendAppMessageModel.IsRunOutTicket = true;
                                sendAppMessageModel.Email          = operatorEntity?.Email;

                                string isServer = AppSettingsHelper.GetAppSettings(AppSettingsEnum.IsServer);
                                string url      = string.Format(
                                    "http://192.168.1.117/orderprocess/Flt_order.asp?orderid={0}",
                                    orderId);
                                if (isServer == "T")
                                {
                                    url = string.Format("http://192.168.1.188/orderprocess/Flt_order.asp?orderid={0}",
                                                        orderId);
                                }
                                sendAppMessageModel.SendContent = string.Format("订单<a href='{0}'>{1}</a>已审核,请出票", url,
                                                                                orderId);
                                sendAppMessageModel.EmailTitle = string.Format("订单{0}已审核,请出票", orderId);
                            }
                        }
                    }
                    else if (corpAduitOrderEntity.Status > (int)CorpAduitOrderStatusEnum.N)
                    {
                        sendAppMessageModel.SendContent = string.Format("您的{0}{1}{2}已通过审批,待下级为您继续审批", orderType,
                                                                        (orderType.Contains("申请") ? "" : "订单"), orderId);
                    }
                }
                else if (sendAppMessageModel.SendType == SendAppMessageTypeEnum.AuditOrderDeleteNotice)
                {
                    sendAppMessageModel.SendContent = string.Format("您的{0}{1}{2}由于已经取消,所以审批自动过期", orderType,
                                                                    (orderType.Contains("申请") ? "" : "订单"), orderId);
                }
            }
        }
Ejemplo n.º 24
0
        public ResponseBaseViewModel <TraTicketRefundResponseViewModel> GetTichetRefund([FromBody] TraTicketRefundViewModel request)
        {
            #region 生产环境,测试帐号不许退票,直接返回
            string testCid = AppSettingsHelper.GetAppSettings(AppSettingsEnum.TestCid);//生产环境,测试帐号不许出票
            if (testCid == this.GetCid().ToString())
            {
                return(new ResponseBaseViewModel <TraTicketRefundResponseViewModel>()
                {
                    Flag = new ResponseCodeViewModel()
                    {
                        Code = 0
                    },
                    Data = new TraTicketRefundResponseViewModel()
                    {
                        OrderId = request.Orderid,
                        OrderNumber = request.OrderNumber,
                        ReqToken = request.ReqToken
                    }
                });
            }
            #endregion
            factory = new TicketRefundFactory();
            domain  = factory.CreateDomainObj();
            TraTicketRefundModel ticketRefundModel = new TraTicketRefundModel()
            {
                LoginUserName     = request.LoginUserName,
                orderid           = request.Orderid,
                transactionid     = request.TransactionId,
                LoginUserPassword = request.LoginUserPassword,
                ordernumber       = request.OrderNumber,
                reqtoken          = request.ReqToken,
                tickets           = new List <RefundTicketDetailModel>()
            };
            foreach (var item in request.Tickets)
            {
                RefundTicketDetailModel model = new RefundTicketDetailModel();
                model.passengername    = item.PassengerName;
                model.passportseno     = item.PassportseNo;
                model.passporttypeseid = item.PassportTypeseId;
                model.ticket_no        = item.TicketNo;
                ticketRefundModel.tickets.Add(model);
            }



            var obj = domain.DoTicketRefund(ticketRefundModel);

            var uiModel = new ResponseBaseViewModel <TraTicketRefundResponseViewModel>();
            var flag    = new ResponseCodeViewModel();
            uiModel.Flag = flag;
            TraTicketRefundResponseViewModel tmodel = new TraTicketRefundResponseViewModel()
            {
                OrderId     = obj.orderid,
                OrderNumber = obj.ordernumber,
                ReqToken    = obj.reqtoken,
                ToolTip     = obj.tooltip
            };

            uiModel.Data = tmodel;
            if (obj.code == 100)
            {
                uiModel.Flag.Code = 0;
            }

            return(uiModel);
        }
Ejemplo n.º 25
0
        public TraOrderConfirmResponseModel RequestPrintTicket(int orderId)
        {
            TraInterFaceOrderEntity traInterFaceOrderEntity =
                _traInterFaceOrderDal.Query <TraInterFaceOrderEntity>(n => n.OrderId == orderId.ToString())
                .FirstOrDefault();

            if (traInterFaceOrderEntity == null)
            {
                return(null);
            }
            int status = traInterFaceOrderEntity.Status;

            if (traInterFaceOrderEntity.CreateTime.AddMinutes(30) < DateTime.Now)
            {
                return(new TraOrderConfirmResponseModel()
                {
                    success = false,
                    msg = "该订单已经超过出票时间范围"
                });
            }

            if (status == (int)OrderTypeEnum.MakingTicket)
            {
                return(new TraOrderConfirmResponseModel()
                {
                    success = false,
                    msg = "该订单已经发起出票请求了"
                });
            }
            if (status == (int)OrderTypeEnum.TicketSuccess)
            {
                return(new TraOrderConfirmResponseModel()
                {
                    success = false,
                    msg = "该订单已经出票了"
                });
            }

            if (status == (int)OrderTypeEnum.OrderCancel)
            {
                return(new TraOrderConfirmResponseModel()
                {
                    success = false,
                    msg = "该订单已经取消了"
                });
            }


            string isServer = AppSettingsHelper.GetAppSettings(AppSettingsEnum.IsServer);
            TraOrderConfirmResponseModel responseModel = null;

            if (isServer == "T")
            {
                responseModel = _requestPrintTicketBll.RequestPrintTicket(new TraOrderConfirmModel()
                {
                    orderid       = orderId.ToString(),
                    transactionid = traInterFaceOrderEntity.Transactionid
                });
            }
            else
            {
                responseModel = new TraOrderConfirmResponseModel()
                {
                    success     = true,
                    ordernumber = "ETest" + DateTime.Now.ToString("yyyyMMdd") + new Random().Next(1000)
                };
            }


            if (responseModel.success)
            {
                traInterFaceOrderEntity.Status      = (int)OrderTypeEnum.MakingTicket;
                traInterFaceOrderEntity.OrderNumber = responseModel.ordernumber;

                _traInterFaceOrderDal.Update <TraInterFaceOrderEntity>(traInterFaceOrderEntity, new[] { "Status", "OrderNumber" });

                _traOrderOperateDal.Insert <TraOrderOperateEntity>(new TraOrderOperateEntity()
                {
                    AfterOperateStatus = (int)OrderTypeEnum.TicketSuccess,
                    InterfaceId        = traInterFaceOrderEntity.InterfaceId,
                    Operate            = (int)OrderTypeEnum.MakingTicket,
                    OperateTime        = traInterFaceOrderEntity.CreateTime,
                    BeforOperateStatus = status
                });
            }

            return(responseModel);
        }
Ejemplo n.º 26
0
        public SearchTrainResponseViewModel SearchTrain(SearchTrainRequestViewModel request)
        {
            if (request.Cid == 0)
            {
                throw new Exception("请传入客户Id");
            }

            //2.根据Cid查询客户信息
            CustomerModel customerModel = _getCustomerServiceBll.GetCustomerByCid(request.Cid);

            string notAllowUserTrainCorpId = AppSettingsHelper.GetAppSettings(AppSettingsEnum.NotAllowUserTrain);

            if (!string.IsNullOrEmpty(customerModel.CorpID) && notAllowUserTrainCorpId.Contains(customerModel.CorpID.ToUpper()))
            {
                throw new Exception("当前公司不能使用火车票功能");
            }

            //调用查询该客户的差旅政策服务
            CorpPolicyDetailConfigModel poilConfigModel =
                _getCustomerCorpPolicyServiceBll.GetCorpPolicyById(request.PolicyId ?? 0, customerModel.CorpID, "T");

            TraQueryTrainModel queryTrainModel = new TraQueryTrainModel()
            {
                from_station  = request.FromStation,
                needdistance  = request.NeedDistance,
                purpose_codes = request.PurposeCodes,
                to_station    = request.ToStation,
                train_date    = request.TrainDate,
                CorpPolicy    = poilConfigModel,
                CorpId        = customerModel.CorpID,
                IsTraAllSeat  = customerModel.Corporation == null ? 0 : customerModel.Corporation.IsTraAllSeat
            };

            List <TraTravelInfoModel>    traTravelInfoModels = _searchTrainServiceBll.DoQueryTrain(queryTrainModel);
            SearchTrainResponseViewModel responseViewModel   = new SearchTrainResponseViewModel();

            List <TraTravelInfoViewModel> travelInfo = new List <TraTravelInfoViewModel>();
            List <string> formStation = new List <string>();
            List <string> toStation   = new List <string>();
            List <string> trainType   = new List <string>();

            foreach (var item in traTravelInfoModels)
            {
                #region 循环
                if (!string.IsNullOrEmpty(item.train_type))
                {
                    trainType.Add(item.train_type);
                }
                if (!string.IsNullOrEmpty(item.from_station_name))
                {
                    formStation.Add(item.from_station_name);
                }
                if (!string.IsNullOrEmpty(item.to_station_name))
                {
                    toStation.Add(item.to_station_name);
                }
                TraTravelInfoViewModel travelInfoViewModel = new TraTravelInfoViewModel()
                {
                    AccessByidCard   = item.access_byidcard,
                    ArriveDays       = item.arrive_days,
                    ArriveTime       = item.arrive_time,
                    CanBuyNow        = item.can_buy_now,
                    DetailList       = AutoMapperHelper.DoMapList <TraTravelInfoDetailModel, TraTravelInfoDetailViewModel>(item.DetailList).ToList(),
                    Distance         = item.distance,
                    EndStationName   = item.end_station_name,
                    FromStationCode  = item.from_station_code,
                    FromStationName  = item.from_station_name,
                    Note             = item.note,
                    RunTime          = item.run_time,
                    RunTimeMinute    = item.run_time_minute,
                    SaleDateTime     = item.sale_date_time,
                    StartStationName = item.start_station_name,
                    StartTime        = item.start_time,
                    ToStationCode    = item.to_station_code,
                    ToStationName    = item.to_station_name,
                    TrainCode        = item.train_code,
                    TrainNo          = item.train_no,
                    TrainStartDate   = Convert.ToDateTime(queryTrainModel.train_date).ToString("yyyy-MM-dd"),//item.train_start_date,
                    TrainType        = item.train_type,
                    OnTrainDate      = request.TrainDate
                };
                travelInfo.Add(travelInfoViewModel);
                #endregion
            }

            responseViewModel.TravelInfo   = travelInfo;
            responseViewModel.FormStation  = formStation.Distinct().ToList();
            responseViewModel.ToStation    = toStation.Distinct().ToList();
            responseViewModel.TrainType    = trainType.Distinct().ToList();
            responseViewModel.PolicyReason = poilConfigModel?.PolicyReason;
            return(responseViewModel);
        }
Ejemplo n.º 27
0
        /// <summary>
        /// 请求之前
        /// </summary>
        /// <param name="actionContext"></param>
        public override void OnActionExecuting(HttpActionContext actionContext)
        {
            //记录请求信息 request
            string requestUrl = actionContext.Request.RequestUri.ToString();
            IDictionary <string, object> routeDictionary = actionContext.RequestContext.RouteData.Values;
            string controller = routeDictionary["controller"].ToString();
            string action     = routeDictionary["action"].ToString();
            string fromHost   = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

            string requestStr = string.Empty;

            if (actionContext.ActionArguments != null && actionContext.ActionArguments.Count > 0)
            {
                if (actionContext.ActionArguments.Keys.Contains("request"))
                {
                    requestStr = Json.Encode(actionContext.ActionArguments["request"]);
                }
            }
            string requestHeader = actionContext.Request.Headers.ToString();
            string logInfo       = string.Format("api请求地址:{0};\r\t请求内容:{1};\r\t请求header:{2}\r\t来自地址:{3}\r\t", requestUrl, requestStr, requestHeader, fromHost);

            if (controller.ToLower() == "Customer".ToLower() && action.ToLower() == "MojoryLogin".ToLower())
            {
                LogHelper.WriteLog(logInfo, "MojoryApiLogin");
            }
            else
            {
                LogHelper.WriteLog(logInfo, "MojoryApiRequest");
            }


            #region 验证请求实体是否合法
            bool          isNeedNotValid = false;//是否不需要验证
            List <string> blackList      = AppSettingsHelper.GetAppSettings(AppSettingsEnum.ValidBlackList).Split(',').ToList();
            foreach (var black in blackList)
            {
                List <string> blackInfo = black.Split('|').ToList();
                if (blackInfo[0] == controller)
                {
                    if (blackInfo[1] == "*")
                    {
                        isNeedNotValid = true;
                        break;
                    }
                    if (blackInfo[1].Contains(action))
                    {
                        isNeedNotValid = true;
                        break;
                    }
                }
            }

            //验证请求实体是否合法
            if (!isNeedNotValid)
            {
                if (!actionContext.ModelState.IsValid)
                {
                    ResponseBaseViewModel <string> responseView = new ResponseBaseViewModel <string>();
                    var    tokenobj = actionContext.Request.Headers.GetValues("MojoryToken");
                    string token    = string.Empty;
                    if (tokenobj != null)
                    {
                        token = tokenobj.First();
                    }
                    string keyStr = string.Empty;
                    foreach (var key in actionContext.ModelState.Keys)
                    {
                        keyStr += "," + key;
                    }

                    responseView.Flag = new ResponseCodeViewModel()
                    {
                        Code        = (int)MojoryApiResponseCode.NoValid,
                        Message     = MojoryApiResponseCode.NoValid.ToDescription() + keyStr,
                        MojoryToken = token
                    };

                    actionContext.Response = new HttpResponseMessage()
                    {
                        Content = new StringContent(Json.Encode(responseView), Encoding.UTF8, "application/json")
                    };

                    base.OnActionExecuting(actionContext);
                }
            }
            #endregion
        }