public GrabTicketResponseModel RequestGrabTicketInterface(AddTraGrabTicketModel addTraGrabTicketModel)
        {
            #region 组装请求接口对象
            GrabTicketRequestModel grabTicketRequestModel = new GrabTicketRequestModel();
            grabTicketRequestModel.qorderid          = addTraGrabTicketModel.OrderId.ToString();
            grabTicketRequestModel.qorder_start_time = addTraGrabTicketModel.GrabBeginTime.ToString("yyyy-MM-dd HH:mm");
            grabTicketRequestModel.qorder_end_time   = addTraGrabTicketModel.GrabEndTime.ToString("yyyy-MM-dd HH:mm");
            grabTicketRequestModel.from_station_code = addTraGrabTicketModel.StartCode;
            grabTicketRequestModel.from_station_name = addTraGrabTicketModel.StartCodeName;
            grabTicketRequestModel.to_station_code   = addTraGrabTicketModel.EndCode;
            grabTicketRequestModel.to_station_name   = addTraGrabTicketModel.EndCodeName;
            grabTicketRequestModel.start_date        = addTraGrabTicketModel.StartTime.ToString("yyyyMMdd");
            grabTicketRequestModel.train_codes       = addTraGrabTicketModel.TrainNo;
            grabTicketRequestModel.train_type        = addTraGrabTicketModel.TrainType;
            grabTicketRequestModel.seat_type         = addTraGrabTicketModel.SeatType;
            grabTicketRequestModel.hasseat           = addTraGrabTicketModel.IsNeedNoSeatTicket;

            grabTicketRequestModel.passengers = new List <GrabTicketPassengerRequestModel>();
            for (var i = 0; i < addTraGrabTicketModel.PassengerList.Count; i++)
            {
                GrabTicketPassengerRequestModel p = new GrabTicketPassengerRequestModel();
                p.passengerid      = i + 1;
                p.passengersename  = addTraGrabTicketModel.PassengerList[i].PassengerName;
                p.passportseno     = addTraGrabTicketModel.PassengerList[i].CardNo;
                p.passporttypeseid = addTraGrabTicketModel.PassengerList[i].KongTieCardType;
                p.piaotype         = addTraGrabTicketModel.PassengerList[i].KongTieTicketType;
                grabTicketRequestModel.passengers.Add(p);
            }
            #endregion

            return(_requestGrabTicketBll.RunGrabTicketInterface(grabTicketRequestModel));
        }
Example #2
0
        public AddGrabTicketResponseViewModel AddGrabTicket(AddGrabTicketRequestViewModel request)
        {
            AddTraGrabTicketModel addTraGrabTicketModel =
                Mapper.Map <AddGrabTicketRequestViewModel, AddTraGrabTicketModel>(request);

            if (addTraGrabTicketModel.SeatType.Contains("无座"))
            {
                throw new Exception("座位类型中不能包含无座");
            }
            addTraGrabTicketModel.CreateOid = request.Oid;
            //0.获取客户信息
            addTraGrabTicketModel.Customer = _getCustomerServiceBll.GetCustomerByCid(request.Cid);

            //1.添加抢票信息
            int grabId = 0;

            using (var transaction = this.Context.Database.BeginTransaction())
            {
                try
                {
                    ICustomerDomainFactory customerDomainFactory = new CustomerDomainFactory();
                    ICustomerDomain        customerDomain        = customerDomainFactory.CreatePassengerInfoDomainObj();

                    _addTraGrabTicketServiceBll.AddContactEvent += customerDomain.AddContactEventListener;
                    grabId = _addTraGrabTicketServiceBll.AddTraGrabTicket(addTraGrabTicketModel);
                    _addTraGrabTicketServiceBll.AddContactEvent -= customerDomain.AddContactEventListener;

                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw;
                }
            }

            //2.访问抢票接口

            GrabTicketResponseModel responseModel = _requestGrabTicketServiceBll.RequestGrabTicketInterface(addTraGrabTicketModel);
            bool isSuccess = false;
            //3.根据结果更新抢票状态
            UpdateTraGrabTicketStatusModel updateTraGrabTicketStatusModel = new UpdateTraGrabTicketStatusModel()
            {
                GrabId = grabId
            };

            if (responseModel.success)
            {
                updateTraGrabTicketStatusModel.GrabStatus = TrainGrabStatusEnum.P;
                isSuccess = true;
            }
            else
            {
                updateTraGrabTicketStatusModel.GrabStatus         = TrainGrabStatusEnum.D;
                updateTraGrabTicketStatusModel.SubmitFailedReason = responseModel.msg;
            }


            _updateTraGrabTicketStatusServiceBll.UpdateTraGrabTicketStatusByAfterSubmit(
                updateTraGrabTicketStatusModel);


            return(new AddGrabTicketResponseViewModel()
            {
                IsSuccess = isSuccess, Message = responseModel.msg
            });
        }
Example #3
0
        /// <summary>
        /// 添加抢票信息
        /// </summary>
        /// <param name="addTraGrabTicketModel"></param>
        /// <returns></returns>
        public int AddTraGrabTicket(AddTraGrabTicketModel addTraGrabTicketModel)
        {
            #region 预生成一张抢票订单
            TraAddOrderModel traAddOrderModel = new TraAddOrderModel();
            traAddOrderModel.OrderSource             = addTraGrabTicketModel.OrderSource;
            traAddOrderModel.Order                   = new TraOrderModel();
            traAddOrderModel.Order.Cid               = addTraGrabTicketModel.Cid ?? 0;
            traAddOrderModel.Order.OrderType         = 1;
            traAddOrderModel.Order.PayType           = PayTypeEnum.Cas;
            traAddOrderModel.Order.SendType          = addTraGrabTicketModel.SendType;
            traAddOrderModel.Order.CName             = addTraGrabTicketModel.CName;
            traAddOrderModel.Order.CMobile           = addTraGrabTicketModel.CMobile;
            traAddOrderModel.Order.CEmail            = addTraGrabTicketModel.CEmail;
            traAddOrderModel.Order.CPhone            = addTraGrabTicketModel.CPhone;
            traAddOrderModel.Order.CFax              = addTraGrabTicketModel.CFax;
            traAddOrderModel.Order.SendAddress       = addTraGrabTicketModel.SendAddress;
            traAddOrderModel.Order.OrderFrom         = TraOrderFromEnum.Interface.ToString();
            traAddOrderModel.Order.CreateOid         = addTraGrabTicketModel.CreateOid;
            traAddOrderModel.Order.IsGrabTicketOrder = true;
            traAddOrderModel.Order.IsOnline          = "F";
            if (!string.IsNullOrEmpty(traAddOrderModel.Customer?.CorpID))
            {
                traAddOrderModel.Order.BalanceType = 1;
                traAddOrderModel.Order.TravelType  = 0;
            }

            traAddOrderModel.Order.SendTime     = addTraGrabTicketModel.SendTime;
            traAddOrderModel.Order.LastSendTime = addTraGrabTicketModel.LastSendTime;

            if (addTraGrabTicketModel.ProjectId.HasValue)
            {
                traAddOrderModel.Order.ProjectId = addTraGrabTicketModel.ProjectId.Value;
            }

            if (!string.IsNullOrEmpty(addTraGrabTicketModel.Depart))
            {
                traAddOrderModel.Order.CostCenter = addTraGrabTicketModel.Depart;
            }
            else
            {
                traAddOrderModel.Order.CostCenter = "";
            }

            traAddOrderModel.OrderStatus = new TraOrderStatusModel();

            traAddOrderModel.OrderDetailList = new List <TraOrderDetailModel>();
            TraOrderDetailModel traOrderDetailModel = new TraOrderDetailModel()
            {
                StartName     = addTraGrabTicketModel.StartCodeName,
                StartNameCode = addTraGrabTicketModel.StartCode,
                EndName       = addTraGrabTicketModel.EndCodeName,
                EndNameCode   = addTraGrabTicketModel.EndCode,
                StartTime     = addTraGrabTicketModel.StartTime,
                OnTrainTime   = addTraGrabTicketModel.StartTime,
                EndTime       = addTraGrabTicketModel.StartTime,
                TrainNo       = "抢票",
                TicketNum     = addTraGrabTicketModel.PassengerList.Count,
                ServiceFee    = addTraGrabTicketModel.ServiceFee,
                FacePrice     = 0,
                TotalPrice    = 0,
                StartCode     = addTraGrabTicketModel.StartCode,
                EndCode       = addTraGrabTicketModel.EndCode,
                PlaceType     = "抢票",
                PlaceGrade    = "抢票",
                PassengerList = new List <TraPassengerModel>()
            };

            List <ContactInfoModel> contactList = new List <ContactInfoModel>();
            foreach (TraGrabTicketPassengerModel traGrabTicketPassengerModel in addTraGrabTicketModel.PassengerList)
            {
                TraPassengerModel passengerModel = new TraPassengerModel()
                {
                    Name       = traGrabTicketPassengerModel.PassengerName,
                    CardNo     = traGrabTicketPassengerModel.CardNo,
                    CardNoType = traGrabTicketPassengerModel.CardType,
                    Mobile     = traGrabTicketPassengerModel.Mobile,
                    AgeType    = traGrabTicketPassengerModel.TicketType,
                    ServiceFee = addTraGrabTicketModel.ServiceFee,
                    ContactId  = traGrabTicketPassengerModel.ContactId,
                    FacePrice  = 0
                };
                traOrderDetailModel.PassengerList.Add(passengerModel);

                contactList.Add(new ContactInfoModel()
                {
                    ContactId      = passengerModel.ContactId,
                    CardNo         = passengerModel.CardNo,
                    CardNoType     = (int)passengerModel.CardNoType,
                    CName          = passengerModel.Name,
                    Mobile         = passengerModel.Mobile,
                    Cid            = traAddOrderModel.Order.Cid,
                    LastUpdateTime = DateTime.Now,
                    IsDel          = "F",
                    IsPassenger    = "F",
                    UpdateOid      = traAddOrderModel.Order.CreateOid,
                    DelTime        = DateTime.Now
                });
            }


            traAddOrderModel.OrderDetailList.Add(traOrderDetailModel);


            traAddOrderModel.Customer = addTraGrabTicketModel.Customer;

            addTraGrabTicketModel.OrderId = _addTraOrderBll.AddTraOrder(traAddOrderModel);

            //通知联系人对象,新增联系人
            AddContactEvent?.Invoke(this, new CommonEventArgs <List <ContactInfoModel> >(contactList));

            #endregion


            #region 添加抢票信息记录
            addTraGrabTicketModel.CreateTime    = DateTime.Now;
            addTraGrabTicketModel.GrabStatus    = TrainGrabStatusEnum.W;
            addTraGrabTicketModel.OrderId       = addTraGrabTicketModel.OrderId;
            addTraGrabTicketModel.GrabBeginTime = DateTime.Now;//任务开始时间默认当前时间,满足空铁接口要求
            TraGrabTicketEntity traGrabTicketEntity =
                Mapper.Map <AddTraGrabTicketModel, TraGrabTicketEntity>(addTraGrabTicketModel);

            List <TraGrabTicketPassengerEntity> traGrabTicketPassengerEntities =
                Mapper.Map <List <TraGrabTicketPassengerModel>, List <TraGrabTicketPassengerEntity> >(
                    addTraGrabTicketModel.PassengerList);

            traGrabTicketEntity = _traGrabTicketDal.Insert(traGrabTicketEntity);

            foreach (var traGrabTicketPassengerEntity in traGrabTicketPassengerEntities)
            {
                traGrabTicketPassengerEntity.GrabId = traGrabTicketEntity.GrabId;
                _traGrabTicketPassengerDal.Insert(traGrabTicketPassengerEntity);
            }
            #endregion


            return(traGrabTicketEntity.GrabId);
        }