コード例 #1
0
        /// <summary>
        /// 退票
        /// </summary>
        /// <returns></returns>
        public TResult RefundOrder(int orderDetailId, int userId)
        {
            var result      = new TResult();
            var orderDetail = _orderDetailRepository.FirstOrDefault(o => o.OrderDetailId == orderDetailId);

            if (orderDetail == null)
            {
                return(result.ErrorResult("订单信息有误"));
            }
            var order = _orderService.Get(orderDetail.OrderNo);

            if (!orderDetail.CanRefund)
            {
                return(result.ErrorResult("门票不支持退票"));
            }
            if (orderDetail.CanRefundTime.HasValue && orderDetail.CanRefundTime < DateTime.Now.Date)
            {
                return(result.ErrorResult("门票已过可退票时间,不能退票"));
            }
            if (orderDetail.OrderStatus == (int)OrderDetailsDataStatus.Refund || orderDetail.OrderStatus == (int)OrderDetailsDataStatus.Consume || orderDetail.OrderStatus == (int)OrderDetailsDataStatus.Canncel)
            {
                return(result.ErrorResult("门票已消费或已退票(取消)"));
            }
            orderDetail.OrderStatus = (int)OrderDetailsDataStatus.Refund;

            //印刷票 退票 库存状态修改为在售
            //记录条形码
            var barcode = string.Empty;

            if (orderDetail.TicketCategory == 1)
            {
                barcode = orderDetail.BarCode;
            }
            //退票后该条码能继续激活
            orderDetail.BarCode = "";
            Tbl_RefundDetail refDtl = new Tbl_RefundDetail
            {
                OrderNo           = orderDetail.OrderNo,
                EnterpriseId      = orderDetail.EnterpriseId,
                ScenicId          = orderDetail.ScenicId,
                SellerId          = orderDetail.SellerId,
                SellerType        = orderDetail.SellerType,
                TicketSource      = orderDetail.TicketSource,
                TicketCategory    = orderDetail.TicketCategory,
                UsedQuantity      = orderDetail.UsedQuantity,
                TicketId          = orderDetail.TicketId,
                TicketName        = orderDetail.TicketName,
                Quantity          = orderDetail.Quantity,
                Price             = orderDetail.Price,
                BarCode           = orderDetail.BarCode,
                Stub              = orderDetail.Stub,
                CertificateNO     = orderDetail.CertificateNO,
                WindowId          = orderDetail.WindowId,
                IDCard            = orderDetail.IDCard,
                Linkman           = orderDetail.Linkman,
                Mobile            = orderDetail.Mobile,
                RefundStatus      = 0,//退款状态
                RefundQuantity    = orderDetail.Quantity,
                RefundFee         = 0,
                RefundTotalAmount = (orderDetail.Price * orderDetail.Quantity),
                RefundSummary     = "",
                OrderTime         = orderDetail.CreateTime,
                ValidityDateStart = orderDetail.ValidityDateStart,
                ValidityDateEnd   = orderDetail.ValidityDateEnd,
                PrintCount        = orderDetail.PrintCount,
                Qrcode            = orderDetail.QRcode,
                QrcodeUrl         = orderDetail.QRcodeUrl,
                OrderDetailId     = orderDetail.OrderDetailId,
                CreateTime        = DateTime.Now,
                CreateUserId      = userId
            };

            var ticketTesting = _ticketTestingRepository.FirstOrDefault(o => o.OrderDetailId == orderDetail.OrderDetailId || o.OrderDetailNumber == orderDetail.Number);
            var ticket        = _ticketRepository.FirstOrDefault(o => o.TicketId == orderDetail.TicketId);

            try
            {
                _refundDetailRepository.BeginTran();
                _orderDetailRepository.Update(orderDetail);
                _ticketTestingRepository.Delete(ticketTesting);
                _refundDetailRepository.Add(refDtl);
                if (ticket != null)
                {
                    int?selCount = 0;
                    if (ticket.SellCount > orderDetail.Quantity)
                    {
                        selCount = ticket.SellCount - orderDetail.Quantity;
                    }

                    ticket.SellCount = ticket.SellCount.HasValue ? selCount : 0;
                    _ticketRepository.Update(ticket);
                }
                _refundDetailRepository.CommitTran();
            }
            catch
            {
                _refundDetailRepository.RollbackTran();
                return(result.ErrorResult());
            }
            return(result.SuccessResult());
        }
コード例 #2
0
 /// <summary>
 /// 获取激活的票
 /// </summary>
 /// <param name="code"></param>
 /// <returns></returns>
 public Tbl_Ticket_Testing GetActivateTicketByCode(string code)
 {
     return(_ticketTestingRepository.FirstOrDefault(a => a.QRcode == code && a.DataStatus == (int)TicketTestingDataStatus.Activate));
 }