/// <summary> /// 取消抢票 /// </summary> /// <param name="cancelTraGrabTicketModel"></param> /// <returns></returns> public CancelTraGrabTicketResultModel CancelTraGrabTicket(CancelTraGrabTicketModel cancelTraGrabTicketModel) { TraGrabTicketEntity traGrabTicketEntity = _traGrabTicketDal.Find <TraGrabTicketEntity>(cancelTraGrabTicketModel.GrabId); if (traGrabTicketEntity == null) { throw new Exception("未找到抢票信息"); } //请求取消接口 GrabTicketCancelResponseModel grabTicketCancelResponseModel = _requestGrabTicketCancelBll.CancelGrabTicket(new GrabTicketCancelRequestModel() { qorderid = traGrabTicketEntity.OrderId.ToString() }); CancelTraGrabTicketResultModel cancelTraGrabTicketResultModel = new CancelTraGrabTicketResultModel(); if (!grabTicketCancelResponseModel.isSuccess) { cancelTraGrabTicketResultModel.IsSuccess = false; cancelTraGrabTicketResultModel.Message = grabTicketCancelResponseModel.msg; } else { cancelTraGrabTicketResultModel.IsSuccess = true; traGrabTicketEntity.GrabStatus = "C"; _traGrabTicketDal.Update(traGrabTicketEntity); } return(cancelTraGrabTicketResultModel); }
public bool UpdateTraGrabTicketStatusByAfterSubmit(UpdateTraGrabTicketStatusModel updateTraGrabTicketStatusModel) { TraGrabTicketEntity traGrabTicketEntity=_traGrabTicketDal.Find<TraGrabTicketEntity>(updateTraGrabTicketStatusModel.GrabId); traGrabTicketEntity.GrabStatus = updateTraGrabTicketStatusModel.GrabStatus.ToString(); traGrabTicketEntity.SubmitFailedReason = updateTraGrabTicketStatusModel.SubmitFailedReason; _traGrabTicketDal.Update(traGrabTicketEntity, new string[] {"GrabStatus", "SubmitFailedReason"}); return true; }
public void GetGrabTicketFailedNotice(GrabTicketFailedDataAsyncResponseModel failedData) { int orderid = Convert.ToInt32(failedData.orderid); TraGrabTicketEntity traGrabTicketEntity = _traGrabTicketDal.Query <TraGrabTicketEntity>(n => n.OrderId == orderid).FirstOrDefault(); if (traGrabTicketEntity == null) { throw new Exception("未找到对应的系统订单"); } traGrabTicketEntity.GrabStatus = TrainGrabStatusEnum.F.ToString(); traGrabTicketEntity.GrabFailedReason = failedData.Msg; _traGrabTicketDal.Update(traGrabTicketEntity, new string[] { "GrabStatus", "GrabFailedReason" }); }
/// <summary> /// 获取抢票异步成功通知,并做处理 /// 则自动生成火车订单,通知抢票发起者 /// </summary> public void GetGrabTicketSuccessNotice(GrabTicketSuccessedDataAsyncResponseModel successedData) { int orderid = Convert.ToInt32(successedData.orderid); #region 1.更新抢票信息状态 TraGrabTicketEntity traGrabTicketEntity = _traGrabTicketDal.Query <TraGrabTicketEntity>(n => n.OrderId == orderid).FirstOrDefault(); if (traGrabTicketEntity == null) { throw new Exception("未找到对应的系统订单"); } traGrabTicketEntity.GrabStatus = TrainGrabStatusEnum.S.ToString(); _traGrabTicketDal.Update(traGrabTicketEntity, new string[] { "GrabStatus" }); #endregion #region 2.1 根据订单获取预设订单信息 TraOrderEntity traOrderEntity = _traOrderDal.Find <TraOrderEntity>(orderid); if (traOrderEntity == null) { throw new Exception("订单信息异常"); } if (traOrderEntity.OrderType == 0) { throw new Exception("该订单已经回调"); } TraOrderDetailEntity traOrderDetailEntity = _traOrderDetailDal.Query <TraOrderDetailEntity>(n => n.OrderId == traOrderEntity.OrderId) .FirstOrDefault(); if (traOrderDetailEntity == null) { throw new Exception("订单信息异常"); } TraOrderStatusEntity traOrderStatusEntity = _traOrderStatusDal.Query <TraOrderStatusEntity>(n => n.OrderId == traOrderEntity.OrderId) .FirstOrDefault(); if (traOrderStatusEntity == null) { throw new Exception("订单信息异常"); } List <TraPassengerEntity> traPassengerEntities = _traPassengerDal.Query <TraPassengerEntity>(n => n.OdId == traOrderDetailEntity.OdId).ToList(); if (traPassengerEntities.Count == 0) { throw new Exception("订单信息异常"); } #endregion #region 2.2根据返回结果,更新预设订单信息 traOrderEntity.TransactionId = successedData.transactionid; traOrderEntity.OrderType = 0; if (successedData.refund_online == "1") { traOrderEntity.IsRefundBy12306 = false; } else { traOrderEntity.IsRefundBy12306 = true; } traOrderDetailEntity.OrderId12306 = successedData.ordernumber; traOrderDetailEntity.StartName = successedData.from_station_name; traOrderDetailEntity.StartCode = successedData.from_station_code; traOrderDetailEntity.StartTime = Convert.ToDateTime(successedData.start_time); TraAddressEntity startAddressEntity = _traAddressDal.Query <TraAddressEntity>(n => n.Addr_Name == traOrderDetailEntity.StartName) .FirstOrDefault(); if (startAddressEntity != null) { traOrderDetailEntity.StartNameId = startAddressEntity.Aid; } traOrderDetailEntity.EndName = successedData.to_station_name; traOrderDetailEntity.EndCode = successedData.to_station_code; traOrderDetailEntity.EndTime = Convert.ToDateTime(successedData.arrive_time); TraAddressEntity endAddressEntity = _traAddressDal.Query <TraAddressEntity>(n => n.Addr_Name == traOrderDetailEntity.EndName) .FirstOrDefault(); if (endAddressEntity != null) { traOrderDetailEntity.EndNameId = endAddressEntity.Aid; } traOrderDetailEntity.TrainNo = successedData.checi; traOrderDetailEntity.FacePrice = Convert.ToDecimal(successedData.orderamount) / 2; traOrderDetailEntity.TotalPrice = traOrderDetailEntity.FacePrice + traOrderDetailEntity.ServiceFee; foreach (TraPassengerEntity traPassengerEntity in traPassengerEntities) { GrabTicketSuccessedPassengerAsyncResponseModel grabTicketPassenger = successedData.passengers.Find( n => n.passengersename == traPassengerEntity.Name && n.passportseno == traPassengerEntity.CardNo); traPassengerEntity.FacePrice = Convert.ToDecimal(grabTicketPassenger.price); List <string> cxinList = grabTicketPassenger.cxin.Split(',').ToList(); if (cxinList.Count == 2) { traPassengerEntity.PlaceCar = cxinList[0]; traPassengerEntity.PlaceSeatNo = cxinList[1]; } traPassengerEntity.PlaceGrade = grabTicketPassenger.zwname; traPassengerEntity.TicketNo = grabTicketPassenger.ticket_no; _traPassengerDal.Update(traPassengerEntity, new string[] { "FacePrice", "PlaceCar", "PlaceSeatNo", "PlaceGrade", "TicketNo" }); } traOrderEntity.TotalMoney = traPassengerEntities.Sum(n => (n.ServiceFee ?? 0) + (n.FacePrice ?? 0)); traOrderEntity.PayAmount = traOrderEntity.TotalMoney; traOrderStatusEntity.IsBuy = 1; traOrderStatusEntity.ProccessStatus = traOrderStatusEntity.ProccessStatus + 1 + 8 + 64; //已付款,已预定 traOrderStatusEntity.RealPayOid = "sys"; traOrderStatusEntity.RealPayDatetime = DateTime.Now; //更新订单 _traOrderDal.Update(traOrderEntity, new string[] { "TransactionId", "IsRefundBy12306", "TotalMoney", "PayAmount", "OrderType" }); //更新行程 _traOrderDetailDal.Update(traOrderDetailEntity, new string[] { "OrderId12306", "StartName", "StartCode", "StartTime", "EndName", "EndCode", "EndTime", "TrainNo", "FacePrice", "TotalPrice" }); //更新订单状态 _traOrderStatusDal.Update(traOrderStatusEntity, new[] { "IsBuy", "ProccessStatus", "RealPayOid", "RealPayDatetime" }); #endregion #region 2.3 设置付款信息,并记录日志 PaySupplierEvent?.Invoke(this, new CommonEventArgs <AccountDetailModel>(new AccountDetailModel() { Aid = 81, Amount = traPassengerEntities.Sum(n => (n.FacePrice ?? 0)) + 5, //抢票订单+5块 Detailtype = "火车票付票款", Oid = "sys", CreateTime = DateTime.Now, Source = "火车票付票款", OrderId = traOrderEntity.OrderId, OrderType = "Tra", Provider = 0, CollectionRemark = "", EstimateId = 0 })); _traOrderLogDal.Insert(new TraOrderLogEntity() { OrderId = traOrderEntity.OrderId, CreateOid = "sys", CreateTime = DateTime.Now, LogContent = "抢票出票回调,自动勾已预定、已付票款、已采购", LogType = "修改" }); #endregion #region 2.3插入Tra_InterFaceOrder表,以便退改签流程 TraInterFaceOrderEntity traInterFaceOrderEntity = _traInterFaceOrderDal.Insert <TraInterFaceOrderEntity>(new TraInterFaceOrderEntity() { OrderId = traOrderEntity.OrderId.ToString(), CreateTime = DateTime.Now, Status = (int)OrderTypeEnum.TicketSuccess, Transactionid = traOrderEntity.TransactionId, OrderNumber = traOrderDetailEntity.OrderId12306 }); _traOrderOperateDal.Insert(new TraOrderOperateEntity() { InterfaceId = traInterFaceOrderEntity.InterfaceId, AfterOperateStatus = (int)OrderTypeEnum.TicketSuccess, BeforOperateStatus = 0, OperateTime = DateTime.Now }); #endregion }
/// <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); }