public TraOrderConfirmResponseModel RequestPrintTicket(TraOrderConfirmModel model)
        {
            RequestInterfaceHelper <TraOrderSubmitModel> .SupplementInPutModel(model, "train_confirm");

            string   jsonstr = "jsonStr=" + JsonHelper.SerializeObject(model);
            DateTime date    = DateTime.Now;

            LogHelper.WriteLog("请求出票接口:" + date + "||||||" + jsonstr, "Request");
            string post = PostHelper.PostUrl(_postUrl, jsonstr, Encoding.UTF8);

            LogHelper.WriteLog("请求出票接口返回:" + date + "||||||" + post, "Request");

            TraOrderConfirmResponseModel trainResponseModel =
                JsonConvert.DeserializeObject <TraOrderConfirmResponseModel>(post);

            return(trainResponseModel);
        }
예제 #2
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);
        }
        public ConfirmTraHoldSeatResponseViewModel ConfirmTraHoldSeat(ConfirmTraHoldSeatRequestViewModel request)
        {
            if (request.IsAgree)//同意占位结果
            {
                TraOrderInfoModel traOrderInfoModel = _getTraOrderServiceBll.GetTraOrderByOrderId(request.OrderId);
                #region 送审
                SubmitCorpAduitOrderModel submitCorpAduitOrder = new SubmitCorpAduitOrderModel()
                {
                    OrderInfoList = new List <SubmitCorpAduitOrderDetailModel>()
                    {
                        new SubmitCorpAduitOrderDetailModel()
                        {
                            OrderId   = request.OrderId,
                            OrderType = OrderSourceTypeEnum.Tra
                        }
                    },
                    PolicyId        = traOrderInfoModel?.Order?.CorpPolicyId,
                    AduitConfigId   = traOrderInfoModel?.Order?.CorpAduitId,
                    Source          = request.OrderSource,
                    SubmitCid       = request.Cid,
                    SubmitOid       = request.Oid,
                    IsViolatePolicy = traOrderInfoModel?.IsViolatePolicy,
                    OrderType       = OrderSourceTypeEnum.Tra
                };
                _submitCorpAduitOrderServiceBll.Submit(submitCorpAduitOrder);

                #endregion

                if (!_submitCorpAduitOrderServiceBll.IsSendAduit)//没有送审的,直接发起出票请求
                {
                    TraOrderConfirmResponseModel traOrderConfirmResponseModel = _requestPrintTicketServiceBll.RequestPrintTicket(request.OrderId);
                    return(new ConfirmTraHoldSeatResponseViewModel()
                    {
                        IsSuccessed = traOrderConfirmResponseModel.success,
                        Message = traOrderConfirmResponseModel.msg
                    });
                }

                return(new ConfirmTraHoldSeatResponseViewModel()
                {
                    IsSuccessed = true
                });
            }
            else
            {
                #region   意
                //取消订单
                _cancelTraOrderServiceBll.CancelTraOrder(new CancelTraOrderModel()
                {
                    OrderId      = request.OrderId,
                    CancelReason = "取消占位,取消订单"
                });
                //取消接口订单
                TraOrderCancelResponseModel traOrderCancelResponseModel =
                    _requestCancelOrderServiceBll.RequestCancelOrder(request.OrderId);
                return(new ConfirmTraHoldSeatResponseViewModel()
                {
                    IsSuccessed = traOrderCancelResponseModel.success,
                    Message = traOrderCancelResponseModel.msg
                });

                #endregion
            }
        }
예제 #4
0
        public DoAduitOrderResponseViewModel DoAduitOrder(DoAduitOrderRequestViewModel request)
        {
            DoAduitOrderResultModel resultModel = null;
            List <int> traOrderIdList           = new List <int>();

            using (var transaction = this.Context.Database.BeginTransaction())
            {
                try
                {
                    resultModel = _doAduitOrderServiceBll.DoAduitOrder(new DoAduitOrderModel()
                    {
                        AduitOrderId = request.AduitOrderId,
                        IsAgree      = request.IsAgree,
                        CurrentFlow  = request.CurrentFlow,
                        DealCid      = request.Cid,
                        DealOid      = request.Oid,
                        AduitReason  = request.AduitReason,
                        DealSource   = request.OrderSource
                    });
                    if (resultModel.IsSuccessed)
                    {
                        if (!request.IsAgree)
                        {
                            #region 审批不通过,则取消对应的订单

                            foreach (var detail in resultModel.DetailList)
                            {
                                if (detail.OrderSourceType == OrderSourceTypeEnum.Flt)
                                {
                                    _cancelFltOrderServiceBll.CancelOnlineCorpOrder(detail.OrderId,
                                                                                    resultModel.CreateAduitOrderCid, "审批不通过");
                                }
                                if (detail.OrderSourceType == OrderSourceTypeEnum.FltModApply ||
                                    detail.OrderSourceType == OrderSourceTypeEnum.FltRetApply)
                                {
                                    _cancelRetModOrderServiceBll.CancelFltRetModApply(detail.OrderId);
                                }
                                if (detail.OrderSourceType == OrderSourceTypeEnum.Tra)
                                {
                                    traOrderIdList.Add(detail.OrderId);
                                    //取消火车订单
                                    _cancelTraOrderServiceBll.CancelTraOrder(new CancelTraOrderModel()
                                    {
                                        OrderId      = detail.OrderId,
                                        CancelReason = "审批不通过,取消订单"
                                    });
                                }
                            }

                            #endregion
                        }
                        else
                        {
                            if (resultModel.IsFinished)
                            {
                                //审批通过,并且当前审批流程已经结束,将审批通过的火车订单加入list
                                traOrderIdList.AddRange(from detail in resultModel.DetailList
                                                        where detail.OrderSourceType == OrderSourceTypeEnum.Tra
                                                        select detail.OrderId);
                            }
                        }
                    }

                    transaction.Commit();
                }
                catch (MojoryException ex)
                {
                    if (ex.Code == MojoryApiResponseCode.AduitCancelOrder)//如果是返回这种类型的异常,还是提交事务,但是异常抛出
                    {
                        transaction.Commit();
                        throw;
                    }

                    transaction.Rollback();
                    throw;
                }
                catch (Exception)
                {
                    transaction.Rollback();
                    throw;
                }
            }
            foreach (var orderId in traOrderIdList)
            {
                if (!request.IsAgree)
                {
                    //取消火车订单后,访问第三方接口取消对应的订单,这里以后可以用mq替换
                    _requestCancelOrderServiceBll.RequestCancelOrder(orderId);
                }
                else
                {
                    //访问第三方出票接口,进行出票,这里以后可以用mq替换
                    TraOrderConfirmResponseModel confirmResponseModel = _requestPrintTicketServiceBll.RequestPrintTicket(orderId);
                    if (confirmResponseModel != null && !confirmResponseModel.success)
                    {
                        throw new Exception("审批通过,但是火车出票已过时限,请转线下处理");
                    }
                }
            }
            //2.发送提醒邮件
            _doAduitOrderServiceBll.GetCorpAduitOrderDetailmail(request);
            return(new DoAduitOrderResponseViewModel()
            {
                IsSuccessed = resultModel.IsSuccessed,
                IsFinished = resultModel.IsFinished
            });
        }