Exemple #1
0
        /// <summary>
        /// 模板生成
        /// </summary>
        /// <param name="orderDetail"></param>
        /// <param name="scenics"></param>
        /// <returns></returns>
        private string CreateTemplate(Tbl_OrderDetail orderDetail, List <Tbl_Scenic> scenics)
        {
            string ScenicName = string.Empty;
            //生成票模板
            var scenic = scenics.FirstOrDefault(o => o.ScenicId == orderDetail.ScenicId);

            if (scenic != null)
            {
                ScenicName = scenic.ScenicName;
            }
            var data = new
            {
                OrderNo           = orderDetail.OrderNo,
                ScenicName        = ScenicName,
                CertificateNO     = orderDetail.CertificateNO,
                TicketName        = orderDetail.TicketName,
                Quantity          = orderDetail.Quantity,
                Price             = orderDetail.Price,
                Amount            = (orderDetail.Price * orderDetail.Quantity),
                Mobile            = orderDetail.Mobile,
                ValidityDateStart = orderDetail.ValidityDateStart,
                QRcodeUrl         = orderDetail.QRcodeUrl
            };
            string htmlStr   = _templateService.GetJNTemplateData(@"printTicketNew.html", data);
            string modelname = OrderHelper.GenerateCertificateNO() + ".html";
            string fileName  = AppSettingsConfig.QrCodeModelPath + "/" + modelname;

            System.IO.StreamWriter sw;
            sw = new System.IO.StreamWriter(fileName, false, Encoding.UTF8);
            sw.Write(htmlStr);
            sw.Close();
            string modelPath = AppSettingsConfig.PrintApiPath + modelname;

            return(modelPath);
        }
 public void Add(Tbl_Ticket_Testing ticketTesting, Tbl_OrderDetail orderDetail)
 {
     //if (ticketTesting.DataStatus != (int)TicketTestingDataStatus.Employ)
     //{
     //    return;
     //}
     if (orderDetail.OrderSource == (int)OrderSource.OTA || orderDetail.OrderSource == (int)OrderSource.XiaoJing)
     {
         var order = _orderService.Get(orderDetail.OrderNo);
         if (order != null)
         {
             _ticketConsumeRepository.Add(new Tbl_TicketConsume
             {
                 OrderNo = order.OrderNo,
                 OtaOrderNo = order.OTAOrderNo,
                 TicketTestingId = ticketTesting.TicketTestingId,
                 TicketCategory = ticketTesting.TicketCategory,
                 BarCode = ticketTesting.BarCode,
                 QRcode = ticketTesting.QRcode,
                 OrderDetailNumber = orderDetail.Number,
                 OrderSource = orderDetail.OrderSource,
                 SendStatus = false,
                 CreateTime = DateTime.Now,
                 SendCount = 0,
                 TicketId = ticketTesting.TicketId
             });
         }
     }
 }
Exemple #3
0
        /// <summary>
        /// 电子票发送短信
        /// </summary>
        /// <param name="orderDetails"></param>
        /// <param name="mobile"></param>
        public StatusResult Send(Tbl_OrderDetail orderDetail, string mobile)
        {
            //发送短信
            var tbl_Scenic = _scenicService.GetSurplusScenic(orderDetail.ScenicId);

            if (tbl_Scenic == null)
            {
                var message = "发送退票短信失败,该景区未开启短信功能,或短信余额不足";
                AddSms(orderDetail, mobile, message);
                return(new StatusResult {
                    Status = false, Message = message
                });
            }
            var sendContent = GetRefundSendContent(orderDetail, tbl_Scenic);
            var status      = SesHelper.Send(mobile, sendContent);

            if (status)
            {
                //短信发送成功,更改景区短信额度
                _scenicService.UpdateSmsCount(orderDetail.ScenicId);
            }
            AddSms(orderDetail, mobile, sendContent, status);
            return(new StatusResult {
                Status = status, Message = status ? "发送退票短信成功" : "发送退票短信失败"
            });
        }
 /// <summary>
 /// 闸机入园更新[旅行社]状态
 /// </summary>
 /// <param name="orderNo"></param>
 public void UpdateForConsume(Tbl_OrderDetail tbl_OrderDetail, Tbl_Ticket_Testing tbl_Ticket_Testing)
 {
     if (tbl_OrderDetail.OrderSource == (int)OrderSource.OTA && tbl_Ticket_Testing.UsedQuantity <= 1)
     {
         var travelAgencyOrder = _travelAgencyOrderRepository.FirstOrDefault(a => a.OrderNo == tbl_Ticket_Testing.OrderNo);
         if (travelAgencyOrder != null)
         {
             travelAgencyOrder.OrderStatus = (int)TraveAgencyOrderStatus.Consume;
             _travelAgencyOrderRepository.Update(travelAgencyOrder);
         }
     }
 }
Exemple #5
0
        /// <summary>
        /// 创建单个产品订单详情
        /// </summary>
        /// <param name="order"></param>
        /// <param name="tbl_Order"></param>
        /// <returns></returns>
        public Tbl_OrderDetail AddOrderDetail(OrderSingleInfo order, Tbl_Order tbl_Order, Tbl_Ticket tbl_Ticket)
        {
            var ticketRule = _ticketRuleRepository.FirstOrDefault(a => a.Id == tbl_Ticket.RuleId);
            //二维码票: 每种门票 一个订单详情,多个数量
            Tbl_OrderDetail tbl_OrderDetail = new Tbl_OrderDetail
            {
                Number            = Guid.NewGuid(),
                OrderNo           = tbl_Order.OrderNo,
                EnterpriseId      = tbl_Ticket.EnterpriseId,
                ScenicId          = tbl_Ticket.ScenicId,
                WindowId          = 0,
                SellerId          = 0,
                SellerType        = 1,
                OtaOrderDetailId  = 0,
                OrderSource       = (int)OrderSource.OTA,
                TicketSource      = (int)TicketSourceStatus.Ota,
                TicketCategory    = (int)TicketCategoryStatus.QrCodeElectronTicket,
                UsedQuantity      = 0,
                TicketId          = tbl_Ticket.TicketId,
                TicketName        = tbl_Ticket.TicketName,
                Price             = tbl_Ticket.SalePrice,
                SettlementPrice   = tbl_Ticket.SettlementPrice,
                Quantity          = order.Ticket.Quantity,
                BarCode           = "",
                Stub              = "",
                CertificateNO     = "",
                OrderStatus       = (int)OrderDetailsDataStatus.NoPay,
                CreateTime        = DateTime.Now,
                ValidityDateStart = order.VisitDate.ToDataTime(),
                ValidityDateEnd   = order.VisitDate.ToDataTime(),
                PrintCount        = 0,
                QRcodeUrl         = "",
                QRcode            = "",
                Mobile            = order.ContactPerson.Mobile,
                IDCard            = tbl_Order.IDCard,
                Linkman           = order.ContactPerson.Name,
                CanModify         = ticketRule.CanModify,
                CanRefund         = ticketRule.CanRefund
            };

            UpdateOrderDetailRefundTimeAndModifyTime(order.VisitDate.ToDataTime(), tbl_Ticket, tbl_OrderDetail, ticketRule);


            //修改订单信息
            tbl_Order.EnterpriseId = tbl_OrderDetail.EnterpriseId;
            tbl_Order.ScenicId     = tbl_OrderDetail.ScenicId;
            tbl_Order.TicketName   = tbl_OrderDetail.TicketName;
            tbl_Order.TotalAmount  = tbl_Ticket.SalePrice * order.Ticket.Quantity;
            tbl_Order.BookCount    = order.Ticket.Quantity;
            return(tbl_OrderDetail);
        }
Exemple #6
0
        /// <summary>
        /// 获取退票短信发送内容
        /// </summary>
        /// <param name="orderDetail"></param>
        /// <param name="scenics"></param>
        /// <param name="templateUrl"></param>
        /// <returns></returns>
        private string GetRefundSendContent(Tbl_OrderDetail orderDetail, Tbl_Scenic scenics)
        {
            string showScName = scenics.SignName;

            if (string.IsNullOrEmpty(showScName))
            {
                showScName = scenics.ScenicName;
            }
            if (showScName.Length > 7)
            {
                showScName = showScName.Substring(0, 7);
            }
            return(string.Format(AppSettingsConfig.RefundOrderInfoPath, showScName, orderDetail.TicketName, orderDetail.OrderNo, orderDetail.Quantity));
        }
 /// <summary>
 /// 更新票的日售票数
 /// </summary>
 /// <param name="tickets"></param>
 /// <param name="orderDetails"></param>
 public void UpdateTicketBySellCount(Tbl_Ticket ticket, Tbl_OrderDetail orderDetail)
 {
     //日销售限额为空或者0  为不限制
     if (ticket.StockCount.HasValue && ticket.StockCount.Value > 0)
     {
         if (ticket.LastUpdateTime.HasValue && ticket.LastUpdateTime.Value.Date == DateTime.Now.Date)
         {
             ticket.SellCount = ticket.SellCount.HasValue ? ticket.SellCount + orderDetail.Quantity : 1;
         }
         ticket.LastUpdateTime = DateTime.Now;
         ticket.SellCount      = 1;
         _ticketRepository.Update(ticket);
     }
 }
        public void Update(Tbl_OrderDetail tbl_OrderDetail)
        {
            if (tbl_OrderDetail == null)
            {
                return;
            }
            var model = _noticeOrderConsumedRepository.FirstOrDefault(a => a.OrderDetailNumber == tbl_OrderDetail.Number);

            if (model != null)
            {
                model.IsTaken = true;
                model.UseDate = DateTime.Now.Date;
                _noticeOrderConsumedRepository.Update(model);
            }
        }
Exemple #9
0
        private bool Send(string mobile, List <Tbl_Scenic> tbl_Scenics, Tbl_OrderDetail detail)
        {
            var templateUrl = CreateTemplate(detail, tbl_Scenics);
            var sendContent = GetSendContent(detail, tbl_Scenics, templateUrl);
            var status      = SesHelper.Send(mobile, sendContent);

            if (status)
            {
                //短信发送成功,更改景区短信额度
                _scenicService.UpdateSmsCount(detail.ScenicId);
                _orderDetailService.UpdataForEticektSendQuantity(detail.Number);
            }
            AddSms(detail, mobile, sendContent, status);
            return(status);
        }
Exemple #10
0
        /// <summary>
        /// 获取短信发送内容
        /// </summary>
        /// <param name="orderDetail"></param>
        /// <param name="scenics"></param>
        /// <param name="templateUrl"></param>
        /// <returns></returns>
        private string GetSendContent(Tbl_OrderDetail orderDetail, List <Tbl_Scenic> scenics, string templateUrl)
        {
            var    scenicEnt  = scenics.FirstOrDefault(o => o.ScenicId == orderDetail.ScenicId && (o.DataStatus & 1) == 0);
            string showScName = scenicEnt.SignName;

            if (string.IsNullOrEmpty(showScName))
            {
                showScName = scenicEnt.ScenicName;
            }
            if (showScName.Length > 7)
            {
                showScName = showScName.Substring(0, 7);
            }
            return(string.Format(AppSettingsConfig.ProductOrderInfoPath, showScName, templateUrl));
        }
        /// <summary>
        /// 更新票的日售票数
        /// </summary>
        /// <param name="orderDetails"></param>
        public void UpdateTicketBySellCount(Tbl_OrderDetail tbl_OrderDetail)
        {
            var tbl_Ticket = _ticketRepository.FirstOrDefault(a => a.TicketId == tbl_OrderDetail.TicketId);

            if (tbl_Ticket != null)
            {
                int?selCount = 0;
                if (tbl_Ticket.SellCount > tbl_OrderDetail.Quantity)
                {
                    selCount = tbl_Ticket.SellCount - tbl_OrderDetail.Quantity;
                }
                tbl_Ticket.SellCount = tbl_Ticket.SellCount.HasValue ? selCount : 0;
                _ticketRepository.Update(tbl_Ticket);
            }
        }
        /// <summary>
        /// 添加订单消费通知
        /// </summary>
        /// <param name="tbl_Order"></param>
        /// <param name="tbl_OrderDetail"></param>
        /// <param name="business"></param>
        public void Add(Tbl_Order tbl_Order, Tbl_OrderDetail tbl_OrderDetail, Tbl_OTABusiness business)
        {
            var tbl_NoticeOrderConsumed = new Tbl_NoticeOrderConsumed
            {
                ScenicId          = tbl_Order.ScenicId,
                IdentityKey       = business.IdentityKey,
                OrderNo           = tbl_Order.OrderNo,
                OtaOrderId        = tbl_Order.OTAOrderNo,
                OrderDetailNumber = tbl_OrderDetail.Number,
                Count             = tbl_OrderDetail.Quantity,
                IsTaken           = false,
                RunCount          = 0,
                CreateTime        = DateTime.Now
            };

            _noticeOrderConsumedRepository.Add(tbl_NoticeOrderConsumed);
        }
Exemple #13
0
 /// <summary>
 /// 更改订单支付状态和可退款时间和可修改时间
 /// </summary>
 /// <param name="tbl_Order"></param>
 /// <param name="tbl_OrderDetails"></param>
 public void UpdateOrder(Tbl_Order tbl_Order, Tbl_OrderDetail tbl_OrderDetail)
 {
     //更改订单状态
     tbl_Order.PayTime     = DateTime.Now;
     tbl_Order.OrderStatus = (int)OrderDataStatus.Success;
     //更改可修改时间
     tbl_Order.CanModify = tbl_OrderDetail.CanModify;
     if (tbl_Order.CanModify)
     {
         tbl_Order.CanModifyTime = tbl_OrderDetail.CanModifyTime;
     }
     //更改可退款时间
     tbl_Order.CanRefund = tbl_OrderDetail.CanRefund;
     if (tbl_Order.CanRefund)
     {
         tbl_Order.CanRefundTime = tbl_OrderDetail.CanRefundTime;
     }
 }
Exemple #14
0
        /// <summary>
        /// 将发送结果插入数据库
        /// </summary>
        /// <param name="orderDetail">订单详情</param>
        /// <param name="mobile">手机号码</param>
        /// <param name="content">发生内容</param>
        /// <param name="SendStatus">短信发送是否成功状态</param>
        private void AddSms(Tbl_OrderDetail orderDetail, string mobile, string content, bool SendStatus)
        {
            var sms = new Tbl_Sms
            {
                OrderDtlID    = orderDetail.OrderDetailId,
                EnterpriseId  = orderDetail.EnterpriseId,
                ScenicId      = orderDetail.ScenicId,
                OrderNo       = orderDetail.OrderNo,
                SmsTmeplateId = 0,
                Mobile        = mobile,
                SmsContent    = content,
                SendResult    = SendStatus ? "发送成功" : "发送失败",
                OrderId       = 1,
                DataStatus    = SendStatus ? 1 : 0,
                CreateTime    = DateTime.Now
            };

            _smsRepository.Add(sms);
        }
        /// <summary>
        /// 添加订单详情 余额支付
        /// </summary>
        /// <param name="order"></param>
        /// <param name="tbl_Order"></param>
        /// <returns></returns>
        public Tbl_OrderDetail AddForBalancePay(Tbl_Order tbl_Order, Tbl_Ticket tbl_Ticket)
        {
            if (tbl_Ticket == null)
            {
                throw new SimplePromptException("门票未找到");
            }
            Tbl_OrderDetail tbl_OrderDetail = new Tbl_OrderDetail
            {
                Number           = Guid.NewGuid(),
                OrderNo          = tbl_Order.OrderNo,
                OrderType        = tbl_Order.OrderType,
                SellerId         = 0,
                SellerType       = 1,
                OtaOrderDetailId = 0,
                OrderSource      = 1,
                TicketSource     = 1,
                TicketCategory   = 1,
                UsedQuantity     = 0,
                TicketId         = tbl_Ticket.TicketId,
                TicketName       = tbl_Ticket.TicketName,
                Price            = tbl_Ticket.SalePrice,
                Quantity         = tbl_Order.BookCount,
                BarCode          = "",
                Stub             = "",
                CertificateNO    = "",
                OrderStatus      = (int)OrderDetailStatusType.Success,

                CreateTime        = DateTime.Now,
                ValidityDateStart = tbl_Order.ValidityDateStart,
                ValidityDateEnd   = tbl_Order.ValidityDateEnd,
                QRcodeUrl         = "",
                QRcode            = "",
                Mobile            = tbl_Order.Mobile,
                IDCard            = "",
                Linkman           = tbl_Order.Linkman,
                BuyUserId         = tbl_Order.BuyUserId,
                CanModify         = true,
                CanRefund         = true,
            };

            _orderDetailRepository.Add(tbl_OrderDetail);
            return(tbl_OrderDetail);
        }
Exemple #16
0
        /// <summary>
        /// 添加订单消费通知
        /// </summary>
        /// <param name="tbl_Order"></param>
        /// <param name="tbl_OrderDetail"></param>
        /// <param name="business"></param>
        public void Add(Tbl_Order tbl_Order, Tbl_OrderDetail tbl_OrderDetail, Tbl_OTABusiness business)
        {
            var tbl_NoticeOrderConsumed = new Tbl_NoticeOrderConsumed
            {
                SequenceId        = DateTime.Now.ToString("yyyyMMdd") + Guid.NewGuid().ToString("N"),
                ScenicId          = tbl_Order.ScenicId,
                IdentityKey       = business.IdentityKey,
                OrderNo           = tbl_Order.OrderNo,
                OtaOrderId        = tbl_Order.OTAOrderNo,
                OrderDetailNumber = tbl_OrderDetail.Number,
                OtaOrderDetailId  = tbl_OrderDetail.OtaOrderDetailId,
                Count             = tbl_OrderDetail.Quantity,
                IsTaken           = false,
                RunCount          = 0,
                CreateTime        = DateTime.Now
            };

            _noticeOrderConsumedRepository.Add(tbl_NoticeOrderConsumed);
        }
Exemple #17
0
        /// <summary>
        /// 添加退款记录
        /// </summary>
        /// <param name="tbl_OrderDetail"></param>
        public Tbl_RefundDetail Add(Tbl_OrderDetail tbl_OrderDetail)
        {
            Tbl_RefundDetail tbl_RefundDetail = new Tbl_RefundDetail
            {
                OrderNo           = tbl_OrderDetail.OrderNo,
                EnterpriseId      = tbl_OrderDetail.EnterpriseId,
                ScenicId          = tbl_OrderDetail.ScenicId,
                SellerId          = tbl_OrderDetail.SellerId,
                SellerType        = tbl_OrderDetail.SellerType,
                TicketSource      = tbl_OrderDetail.TicketSource,
                TicketCategory    = tbl_OrderDetail.TicketCategory,
                UsedQuantity      = tbl_OrderDetail.UsedQuantity,
                TicketId          = tbl_OrderDetail.TicketId,
                TicketName        = tbl_OrderDetail.TicketName,
                Quantity          = tbl_OrderDetail.Quantity,
                Price             = tbl_OrderDetail.Price,
                BarCode           = tbl_OrderDetail.BarCode,
                Stub              = tbl_OrderDetail.Stub,
                CertificateNO     = tbl_OrderDetail.CertificateNO,
                WindowId          = tbl_OrderDetail.WindowId,
                IDCard            = tbl_OrderDetail.IDCard,
                Linkman           = tbl_OrderDetail.Linkman,
                Mobile            = tbl_OrderDetail.Mobile,
                RefundStatus      = 0,//退款状态
                RefundQuantity    = tbl_OrderDetail.Quantity,
                RefundFee         = 0,
                RefundTotalAmount = (tbl_OrderDetail.Price * tbl_OrderDetail.Quantity),
                RefundSummary     = "",
                OrderTime         = tbl_OrderDetail.CreateTime,
                ValidityDateStart = tbl_OrderDetail.ValidityDateStart,
                ValidityDateEnd   = tbl_OrderDetail.ValidityDateEnd,
                PrintCount        = tbl_OrderDetail.PrintCount,
                Qrcode            = tbl_OrderDetail.QRcode,
                QrcodeUrl         = tbl_OrderDetail.QRcodeUrl,
                OrderDetailId     = tbl_OrderDetail.OrderDetailId,

                CreateTime   = DateTime.Now,
                CreateUserId = 0
            };

            _refundDetailRepository.Add(tbl_RefundDetail);
            return(tbl_RefundDetail);
        }
Exemple #18
0
        /// <summary>
        /// 将发送结果插入数据库
        /// </summary>
        /// <param name="orderDetail">订单详情</param>
        /// <param name="mobile">手机号码</param>
        /// <param name="sendResult">结果</param>
        private void AddSms(Tbl_OrderDetail orderDetail, string mobile, string sendResult)
        {
            var sms = new Tbl_Sms
            {
                OrderDtlID    = orderDetail.OrderDetailId,
                EnterpriseId  = orderDetail.EnterpriseId,
                ScenicId      = orderDetail.ScenicId,
                OrderNo       = orderDetail.OrderNo,
                SmsTmeplateId = 0,
                Mobile        = mobile,
                SmsContent    = "",
                SendResult    = sendResult,
                OrderId       = 1,
                DataStatus    = 0,
                CreateTime    = DateTime.Now
            };

            _smsRepository.Add(sms);
        }
        /// <summary>
        /// 二维码支付,生成验票信息,自动激活
        /// </summary>
        /// <param name="order"></param>
        /// <param name="orderDetails"></param>
        /// <returns></returns>
        public Tbl_Ticket_Testing AddTicketTesting(Tbl_Order order, Tbl_OrderDetail orderDetail)
        {
            orderDetail.OrderStatus = (int)OrderDetailsDataStatus.Success;

            if (orderDetail.TicketCategory != 1)
            {
                //生成凭证号
                orderDetail.CertificateNO = OrderHelper.GetCertificateNo();

                //二维码订单支付,生成二维码串,自动激活
                orderDetail.OrderStatus = (int)OrderDetailsDataStatus.Activate;

                //生成二维码串
                orderDetail.QRcode = OrderHelper.GenerateQRCode();

                //生成一张二维码图片,返回图片地址
                string imgpath = string.Empty;
                //OrderHelper.CreateCode_Simple(orderDetail.QRcode, out imgpath);
                orderDetail.QRcodeUrl = imgpath;

                //二维码支付,生成验票信息,自动激活
                Tbl_Ticket_Testing tbl_Ticket_Testing = new Tbl_Ticket_Testing
                {
                    OrderDetailNumber = orderDetail.Number,
                    OrderDetailId     = orderDetail.OrderDetailId,
                    OrderNo           = orderDetail.OrderNo,
                    EnterpriseId      = orderDetail.EnterpriseId,
                    ScenicId          = orderDetail.ScenicId,
                    TicketCategory    = orderDetail.TicketCategory,
                    TicketId          = orderDetail.TicketId,
                    TicketName        = orderDetail.TicketName,
                    BarCode           = orderDetail.BarCode,
                    CertificateNO     = orderDetail.CertificateNO,
                    QRcode            = orderDetail.QRcode,
                    DataStatus        = 1,
                    Quantity          = orderDetail.Quantity,
                    IDCard            = orderDetail.IDCard
                };
                return(tbl_Ticket_Testing);
            }
            return(null);
        }
        /// <summary>
        /// 添加退款记录
        /// </summary>
        /// <param name="tbl_OrderDetail"></param>
        public Tbl_OrderRefundDetail AddForTicket(Tbl_OrderDetail tbl_OrderDetail)
        {
            Tbl_OrderRefundDetail tbl_OrderRefundDetail = new Tbl_OrderRefundDetail
            {
                OrderRefundNo     = OrderHelper.GenerateOrderNo(),
                OrderDetailId     = tbl_OrderDetail.OrderDetailId,
                OrderNo           = tbl_OrderDetail.OrderNo,
                Quantity          = tbl_OrderDetail.Quantity,
                Price             = tbl_OrderDetail.Price,
                RefundStatus      = (int)OrderRefundType.Success,
                RefundQuantity    = tbl_OrderDetail.Quantity,
                RefundFee         = 0,
                RefundTotalAmount = (tbl_OrderDetail.Price * tbl_OrderDetail.Quantity),
                RefundSummary     = "",
                OrderTime         = tbl_OrderDetail.CreateTime,

                CreateTime = DateTime.Now,
            };

            _orderRefundDetailRepository.Add(tbl_OrderRefundDetail);
            return(tbl_OrderRefundDetail);
        }
        /// <summary>
        /// 充值
        /// </summary>
        /// <param name="tbl_Order"></param>
        /// <returns></returns>
        public Tbl_OrderDetail AddForRecharge(Tbl_Order tbl_Order)
        {
            Tbl_OrderDetail tbl_OrderDetail = new Tbl_OrderDetail
            {
                Number            = Guid.NewGuid(),
                OrderNo           = tbl_Order.OrderNo,
                OrderType         = tbl_Order.OrderType,
                SellerId          = 0,
                SellerType        = 1,
                OtaOrderDetailId  = 0,
                OrderSource       = 1,
                TicketSource      = 1,
                TicketCategory    = 1,
                UsedQuantity      = 0,
                TicketId          = 0,
                TicketName        = tbl_Order.TicketName,
                Price             = tbl_Order.TotalAmount,
                Quantity          = tbl_Order.BookCount,
                BarCode           = "",
                Stub              = "",
                CertificateNO     = "",
                OrderStatus       = (int)OrderDetailStatusType.NoPay,
                CreateTime        = DateTime.Now,
                ValidityDateStart = tbl_Order.ValidityDateStart,
                ValidityDateEnd   = tbl_Order.ValidityDateEnd,
                QRcodeUrl         = "",
                QRcode            = "",
                Mobile            = tbl_Order.Mobile,
                IDCard            = "",
                Linkman           = tbl_Order.Linkman,
                BuyUserId         = tbl_Order.BuyUserId,
                CanModify         = true,
                CanRefund         = true,
            };

            _orderDetailRepository.Add(tbl_OrderDetail);
            return(tbl_OrderDetail);
        }
Exemple #22
0
 public void GetOrderDetailsDataStatus(Tbl_OrderDetail tbl_OrderDetail, OrderQueryTicketInfo orderQueryTicketInfo)
 {
     if (tbl_OrderDetail.OrderStatus == (int)OrderDetailsDataStatus.Success || tbl_OrderDetail.OrderStatus == (int)OrderDetailsDataStatus.Activate)
     {
         orderQueryTicketInfo.Status      = "OREDER_SUCCESS"; //已支付未消费
         orderQueryTicketInfo.OrderStatus = (int)TicketOrderStatus.Success;
     }
     else if (tbl_OrderDetail.OrderStatus == (int)OrderDetailsDataStatus.Canncel || tbl_OrderDetail.OrderStatus == (int)OrderDetailsDataStatus.Refund)
     {
         orderQueryTicketInfo.Status      = "OREDER_CANCEL";//已取消
         orderQueryTicketInfo.OrderStatus = (int)TicketOrderStatus.Canncel;
     }
     else if (tbl_OrderDetail.OrderStatus == (int)OrderDetailsDataStatus.Consume || tbl_OrderDetail.OrderStatus == (int)OrderDetailsDataStatus.IsTaken)
     {
         orderQueryTicketInfo.Status      = "OREDER_CONSUMED";//已消费
         orderQueryTicketInfo.OrderStatus = (int)TicketOrderStatus.Consume;
     }
     else if (tbl_OrderDetail.CanRefundTime < DateTime.Now.Date)
     {
         orderQueryTicketInfo.Status      = "OREDER_OVERDUE";//已过期
         orderQueryTicketInfo.OrderStatus = (int)TicketOrderStatus.Expired;
     }
 }
Exemple #23
0
        private PrintResult Print(PrintConfigData printConfigData, Tbl_Scenic tbl_Scenic, Tbl_OrderDetail tbl_OrderDetail)
        {
            tbl_OrderDetail.UsedQuantity = tbl_OrderDetail.Quantity;
            tbl_OrderDetail.PrintCount++;
            if (tbl_OrderDetail.OrderStatus == (int)OrderDetailsDataStatus.Activate)
            {
                tbl_OrderDetail.OrderStatus = (int)OrderDetailsDataStatus.IsTaken;
            }

            _orderDetailService.Update(tbl_OrderDetail);
            var userInfo       = _enterpriseUserService.LoginForSession();
            var printOrderData = new PrintOrderData
            {
                OrderNo       = tbl_OrderDetail.OrderNo,
                TicketName    = tbl_OrderDetail.TicketName,
                Qunatity      = tbl_OrderDetail.Quantity,
                Price         = tbl_OrderDetail.Price,
                TotalAmount   = tbl_OrderDetail.Quantity * tbl_OrderDetail.Price,
                CertificateNo = tbl_OrderDetail.CertificateNO,
                QRcode        = SecurityExtension.DesEncrypt(tbl_OrderDetail.QRcode, DesKey.QrCodeKey),
                CreateTime    = tbl_OrderDetail.ValidityDateStart.ToString("yyyy-MM-dd"),
                PrintCount    = tbl_OrderDetail.PrintCount,
                RealName      = userInfo.RealName,
                UserName      = userInfo.UserName
            };

            if (tbl_Scenic != null)
            {
                printOrderData.ScenicName  = tbl_Scenic.ScenicName;
                printOrderData.ScenicPhone = tbl_Scenic.Tel;
            }
            return(_printGateway.Send(printOrderData, printConfigData));
        }
 /// <summary>
 /// 修改订单状态--退款
 /// </summary>
 /// <param name="tbl_Order"></param>
 public void UpdateForRefund(Tbl_OrderDetail tbl_OrderDetail)
 {
     tbl_OrderDetail.OrderStatus = (int)OrderDetailStatusType.Refund;
     tbl_OrderDetail.CancelTime  = DateTime.Now;
     _orderDetailRepository.Update(tbl_OrderDetail);
 }
Exemple #25
0
 public void Add(Tbl_OrderDetail tbl_OrderDetail)
 {
     _orderDetailRepository.Add(tbl_OrderDetail);
 }
Exemple #26
0
        /// <summary>
        /// 更新订单详情的可退款时间和可修改时间
        /// </summary>
        /// <param name="order"></param>
        /// <param name="ticket"></param>
        /// <param name="tbl_OrderDetail"></param>
        private static void UpdateOrderDetailRefundTimeAndModifyTime(DateTime visitDate, Tbl_Ticket ticket, Tbl_OrderDetail tbl_OrderDetail, Tbl_TicketRule ticketRule)
        {
            //是否支持退款
            if (ticketRule.CanRefund)
            {
                int refundDay    = ticketRule.RefundDay == null ? 0 : ticketRule.RefundDay.Value;
                int refundHour   = ticketRule.RefundHour == null ? 0 : ticketRule.RefundHour.Value;
                int refundMinute = ticketRule.RefundMinute == null ? 0 : ticketRule.RefundMinute.Value;
                if (ticketRule.IsAnytimeRefund)//随时退
                {
                    tbl_OrderDetail.CanRefundTime = null;
                }
                else
                {
                    var canRefundTime = visitDate.Date.AddDays(1).AddSeconds(-1);
                    if (refundDay == 0 && refundHour == 0 && refundMinute == 0)
                    {
                        tbl_OrderDetail.CanRefundTime = canRefundTime;
                    }
                    else
                    {
                        canRefundTime = canRefundTime.AddDays(refundDay);
                        if (refundDay >= 0)
                        {
                            canRefundTime = canRefundTime.AddHours(refundHour);
                            canRefundTime = canRefundTime.AddMinutes(refundMinute);
                        }
                        else
                        {
                            canRefundTime = canRefundTime.AddHours(-refundHour);
                            canRefundTime = canRefundTime.AddMinutes(-refundMinute);
                        }
                        tbl_OrderDetail.CanRefundTime = canRefundTime;
                    }
                }
            }
            //是否支持修改已支付订单
            if (ticketRule.CanModify)
            {
                int modifyDay    = ticketRule.ModifyDay == null ? 0 : ticketRule.ModifyDay.Value;
                int modifyHour   = ticketRule.ModifyHour == null ? 0 : ticketRule.ModifyHour.Value;
                int modifyMinute = ticketRule.ModifyMinute == null ? 0 : ticketRule.ModifyMinute.Value;
                if (modifyDay == 0 && modifyHour == 0 && modifyMinute == 0)
                {
                    tbl_OrderDetail.CanModifyTime = null;
                }
                else
                {
                    var canModifyTime = visitDate.AddDays(modifyDay);
                    if (modifyDay >= 0)
                    {
                        canModifyTime = canModifyTime.AddHours(modifyHour);
                        canModifyTime = canModifyTime.AddMinutes(modifyMinute);
                    }
                    else
                    {
                        canModifyTime = canModifyTime.AddHours(-modifyHour);
                        canModifyTime = canModifyTime.AddMinutes(-modifyMinute);
                    }
                    tbl_OrderDetail.CanModifyTime = canModifyTime;
                }
            }
            //延时验票时间
            double delayCheckMinutes = Convert.ToDouble(ticketRule.DelayCheck);

            tbl_OrderDetail.DelayCheckTime = tbl_OrderDetail.CreateTime.AddMinutes(delayCheckMinutes);
        }
Exemple #27
0
        /// <summary>
        /// 创建订单详情 - 二维码票
        /// </summary>
        /// <param name="order"></param>
        /// <param name="tbl_Order"></param>
        /// <returns></returns>
        private List <Tbl_OrderDetail> addQrCodeTicketOrderDetail(OrderInfo order, Tbl_Order tbl_Order)
        {
            List <Tbl_OrderDetail> orderDetails = new List <Tbl_OrderDetail>();
            string  ticketNames = string.Empty;
            decimal TotalMoney  = 0;
            int     TotalCount  = 0;
            //企业Id
            int EnterpriseID = 0;
            int ScenicID     = 0;

            foreach (var te in order.TicketList)
            {
                var ticket     = _ticketService.GetTicket(order.VisitDate.ToDataTime(), te.ProductId);
                var ticketRule = _ticketRuleRepository.FirstOrDefault(a => a.Id == ticket.RuleId);
                //二维码票: 每种门票 一个订单详情,多个数量
                Tbl_OrderDetail tbl_OrderDetail = new Tbl_OrderDetail
                {
                    Number            = Guid.NewGuid(),
                    OrderNo           = tbl_Order.OrderNo,
                    EnterpriseId      = ticket.EnterpriseId,
                    ScenicId          = ticket.ScenicId,
                    WindowId          = 0,
                    SellerId          = 0,
                    SellerType        = 1,
                    OtaOrderDetailId  = 0,
                    OrderSource       = (int)OrderSource.OTA,
                    TicketSource      = (int)TicketSourceStatus.Ota,
                    TicketCategory    = (int)TicketCategoryStatus.QrCodeElectronTicket,
                    UsedQuantity      = 0,
                    TicketId          = te.ProductId,
                    TicketName        = ticket.TicketName,
                    Price             = ticket.SalePrice,
                    SettlementPrice   = ticket.SettlementPrice,
                    Quantity          = te.Quantity,
                    BarCode           = "",
                    Stub              = "",
                    CertificateNO     = "",
                    OrderStatus       = (int)OrderDetailsDataStatus.NoPay,
                    CreateTime        = DateTime.Now,
                    ValidityDateStart = order.VisitDate.ToDataTime(),
                    ValidityDateEnd   = order.VisitDate.ToDataTime(),
                    PrintCount        = 0,
                    QRcodeUrl         = "",
                    QRcode            = "",
                    Mobile            = order.ContactPerson.Mobile,
                    IDCard            = tbl_Order.IDCard,
                    Linkman           = order.ContactPerson.Name,
                    CanModify         = ticketRule.CanModify,
                    CanRefund         = ticketRule.CanRefund
                };
                UpdateOrderDetailRefundTimeAndModifyTime(order.VisitDate.ToDataTime(), ticket, tbl_OrderDetail, ticketRule);
                orderDetails.Add(tbl_OrderDetail);
                //有效的门票信息
                EnterpriseID = ticket.EnterpriseId;
                ScenicID     = ticket.ScenicId;
                ticketNames += ticket.TicketName + ",";
                TotalMoney  += (ticket.SalePrice * te.Quantity);
                TotalCount  += te.Quantity;
            }
            ticketNames = ticketNames.Substring(0, ticketNames.Length - 1);
            if (ticketNames.Length > 50)
            {
                ticketNames = ticketNames.Substring(0, 50);
            }
            tbl_Order.EnterpriseId = EnterpriseID;
            tbl_Order.ScenicId     = ScenicID;
            tbl_Order.TicketName   = ticketNames;
            tbl_Order.TotalAmount  = TotalMoney;
            tbl_Order.BookCount    = TotalCount;
            return(orderDetails);
        }
Exemple #28
0
 /// <summary>
 /// 更新订单详情的状态:为已退款
 /// </summary>
 /// <param name="tbl_OrderDetail"></param>
 public void UpdateOrderDetailForRefund(Tbl_OrderDetail tbl_OrderDetail)
 {
     tbl_OrderDetail.OrderStatus = (int)OrderDetailsDataStatus.Refund;
     _orderDetailRepository.Update(tbl_OrderDetail);
 }
Exemple #29
0
 /// <summary>
 /// 修改--小径平台
 /// </summary>
 /// <param name="orderDeail"></param>
 /// <param name="item"></param>
 public void XJ_UpdateOrderDetail(Tbl_OrderDetail orderDeail, XJ_ProductItem item)
 {
     orderDeail.ValidityDateStart = item.StartDate;
     orderDeail.ValidityDateEnd   = item.EndDate;
     _orderDetailRepository.Update(orderDeail);
 }
Exemple #30
0
        /// <summary>
        /// 创建订单详情 - 二维码票
        /// </summary>
        /// <param name="order"></param>
        /// <param name="tbl_Order"></param>
        /// <returns></returns>
        public List <Tbl_OrderDetail> AddOrderDetailForQrCodeNoPay(OrderInfoModel order, Tbl_Order tbl_Order)
        {
            if (order.TicketCategory == 1)
            {
                return(new List <Tbl_OrderDetail>());
            }
            List <Tbl_OrderDetail> orderDetails = new List <Tbl_OrderDetail>();
            string  ticketNames = string.Empty;
            decimal TotalMoney  = 0;
            int     TotalCount  = 0;
            //企业Id
            int EnterpriseID = 0;
            int ScenicID     = 0;

            foreach (var te in order.TicketItem)
            {
                var ticket     = _ticketService.GetTicket(order.ValidityDate, te.TicketId);
                var ticketRule = _ticketRuleRepository.FirstOrDefault(a => a.Id == ticket.RuleId);

                //二维码票: 每种门票 一个订单详情,多个数量
                Tbl_OrderDetail tbl_OrderDetail = new Tbl_OrderDetail
                {
                    Number            = Guid.NewGuid(),
                    OrderNo           = tbl_Order.OrderNo,
                    EnterpriseId      = ticket.EnterpriseId,
                    ScenicId          = ticket.ScenicId,
                    OrderType         = tbl_Order.OrderType,
                    WindowId          = 0,
                    SellerId          = 0,
                    SellerType        = 1,
                    OtaOrderDetailId  = 0,
                    OrderSource       = (int)OrderSource.My,
                    TicketSource      = order.TicketSource,
                    TicketCategory    = order.TicketCategory,
                    UsedQuantity      = 0,
                    TicketId          = te.TicketId,
                    TicketName        = ticket.TicketName,
                    Price             = ticket.SalePrice,
                    Quantity          = te.BookCount,
                    BarCode           = "",
                    Stub              = "",
                    CertificateNO     = "",
                    OrderStatus       = (int)OrderDetailsDataStatus.NoPay,
                    CreateTime        = DateTime.Now,
                    ValidityDateStart = order.ValidityDate,
                    ValidityDateEnd   = order.ValidityDate,
                    PrintCount        = 0,
                    QRcodeUrl         = "",
                    QRcode            = "",
                    Mobile            = order.Mobile,
                    IDCard            = "",
                    Linkman           = order.Linkman,
                    CanModify         = ticketRule.CanModify,
                    CanRefund         = ticketRule.CanRefund
                };
                UpdateOrderDetailRefundTimeAndModifyTime(order.ValidityDate, ticket, tbl_OrderDetail, ticketRule);
                orderDetails.Add(tbl_OrderDetail);
                //有效的门票信息
                EnterpriseID = ticket.EnterpriseId;
                ScenicID     = ticket.ScenicId;
                ticketNames += ticket.TicketName + ",";
                TotalMoney  += (ticket.SalePrice * te.BookCount);
                TotalCount  += te.BookCount;
            }
            ticketNames = ticketNames.Substring(0, ticketNames.Length - 1);
            if (ticketNames.Length > 50)
            {
                ticketNames = ticketNames.Substring(0, 50);
            }
            tbl_Order.EnterpriseId = EnterpriseID;
            tbl_Order.ScenicId     = ScenicID;
            tbl_Order.TicketName   = ticketNames;
            tbl_Order.TotalAmount  = TotalMoney;
            tbl_Order.BookCount    = TotalCount;
            return(orderDetails);
        }