Пример #1
0
        /// <summary>
        /// 订单详情--退款
        /// </summary>
        private bool RefundOrderDetail(XJ_ProductItem item)
        {
            //判断门票是否可以退票和过了退票有效期
            var result = _orderDetailService.XJ_CheckOrderDetailIsCanncel(item.OrderDetailId);

            if (result == null)
            {
                return(false);
            }
            try
            {
                _orderService.BeginTran();
                //添加退款记录
                var tbl_RefundDetail = _refundDetailService.Add(result);
                //更新订单详情的状态:为已退款
                _orderDetailService.UpdateOrderDetailForRefund(result);
                //更新票的日售票数
                _ticketService.UpdateTicketBySellCount(result);
                //退激活票时,同步删除验票表存在的数据
                _ticketTestingService.Delete(result.OrderNo);
                //添加日志
                _saleLogService.Add(tbl_RefundDetail);
                //提交事物
                _orderService.CommitTran();
                return(true);
            }
            catch (Exception ex)
            {
                _orderService.RollbackTran();
                return(false);
            }
        }
Пример #2
0
        public TResult PayOrder(OrderCreateModel order)
        {
            var result = new TResult();

            if (order.TicketItem.Count <= 0)
            {
                return(result.ErrorResult("请选择您要购买的产品"));
            }

            var userInfo  = _enterpriseUserService.LoginForSession();
            var orderInfo = new OrderInfoCreateModel
            {
                PayType        = order.PayType,
                UserId         = userInfo.UserId,
                ValidityDate   = order.ValidityDate,
                Mobile         = "",
                Linkman        = "",
                TicketCategory = (int)TicketCategoryStatus.QrCodePrintTicket,
                TicketSource   = (int)TicketSourceStatus.ScenicSpot,
                TicketItem     = order.TicketItem
            };

            List <int> productIds       = orderInfo.TicketItem.Select(a => a.TicketId).ToList();
            var        tbl_Tickets      = _ticketService.GetTickets(productIds);
            var        tbl_Order        = _orderService.AddOrder(orderInfo);
            var        tbl_OrderDetails = _orderDetailService.AddOrderDetails(orderInfo, tbl_Order);

            _orderService.UpdateOrder(tbl_Order, tbl_OrderDetails);
            var tbl_Ticket_Testings = _ticketTestingService.addTicketTestings(tbl_Order, tbl_OrderDetails);

            _ticketService.UpdateTicketBySellCount(tbl_Tickets, tbl_OrderDetails);
            try
            {
                _orderService.BeginTran();
                _orderService.Add(tbl_Order);
                _orderDetailService.Add(tbl_OrderDetails);
                _ticketTestingService.Add(tbl_Ticket_Testings);
                _saleLogService.Add(tbl_Order);
                _ticketService.Update(tbl_Tickets);
                //提交事物
                _orderService.CommitTran();
            }
            catch
            {
                _orderService.RollbackTran();
                return(result.ErrorResult());
            }

            //打印机打印
            if (order.IsPrint && !string.IsNullOrEmpty(order.PrintKey))
            {
                var isPrint = _printService.Print(tbl_Order.OrderNo, order.PrintKey);
                if (!isPrint.Success)
                {
                    return(result.ErrorResult("门票创建成功," + isPrint.Message));
                }
            }

            return(result.SuccessResult());
        }
Пример #3
0
        /// <summary>
        /// 取消订单详情
        /// </summary>
        /// <param name="orderInfo"></param>
        public OrderDetailRefundResponse RefundOrderDetail(int orderDetailId)
        {
            OrderDetailRefundResponse result = new OrderDetailRefundResponse();
            //判断门票是否可以退票和过了退票有效期
            var checkResult = _orderDetailService.CheckOrderDetailIsCanncel(orderDetailId);

            if (!checkResult.Status)
            {
                //坚持未通过
                result.Message = checkResult.Message;
                result.Code    = checkResult.Code;
                return(result);
            }
            try
            {
                _orderService.BeginTran();
                //添加退款记录
                var tbl_RefundDetail = _refundDetailService.Add(checkResult.Item);
                //更新订单详情的状态:为已退款
                _orderDetailService.UpdateOrderDetailForRefund(checkResult.Item);
                //更新票的日售票数
                _ticketService.UpdateTicketBySellCount(checkResult.Item);
                //退激活票时,同步删除验票表存在的数据
                _ticketTestingService.Delete(orderDetailId);
                //添加日志
                _saleLogService.Add(tbl_RefundDetail);
                //提交事物
                _orderService.CommitTran();


                //电子票发送退票短信
                //var statusResult = _smsService.Send(checkResult.Item, checkResult.Item.Mobile);
                //if (statusResult.Status)
                //{
                result.Status  = true;
                result.Message = "订单详情退款成功";
                return(result);
                //}
                //result.Message = "订单详情退款成功,退款短信发送失败";
                //result.Status = true;
                //return result;
            }
            catch (Exception ex)
            {
                _orderService.RollbackTran();
                result.Message = "订单详情退款成功,退款短信发送失败";
                result.Status  = true;
                return(result);
            }
        }
        /// <summary>
        /// 创建订单并支付
        /// </summary>
        /// <param name="orderInfo"></param>
        private PageResult PayOrder(OrderCreateRequest request, Tbl_OTABusiness business)
        {
            OrderInfo           orderInfo = request.Body.OrderInfo;
            OrderCreateResponse result    = new OrderCreateResponse
            {
                Head = HeadResult.V1
            };
            var validResult = _orderService.ValidDataForOrderCreateRequest(request, result);

            if (!validResult.Status)
            {
                result.Head.Code     = validResult.Code;
                result.Head.Describe = validResult.Message;
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            List <int> productIds  = orderInfo.TicketList.Select(a => a.ProductId).ToList();
            var        ticketIds   = _otaTicketRelationService.GetTicketIds(business.Id, productIds);
            var        tbl_Tickets = _ticketService.CheckIsTicketIds(ticketIds, business.ScenicId, orderInfo.VisitDate.ToDataTime());

            var validDataResult = _orderService.ValidDataForOrderCreateRequest(request, tbl_Tickets);

            if (!validDataResult.Status)
            {
                result.Head.Code     = validDataResult.Code;
                result.Head.Describe = validDataResult.Message;
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            var tbl_Order        = _orderService.AddOrder(orderInfo, business);
            var tbl_OrderDetails = _orderDetailService.AddOrderDetail(orderInfo, tbl_Order);

            _orderService.UpdateOrder(tbl_Order, tbl_OrderDetails);
            var tbl_Ticket_Testing = _ticketTestingService.addTicketTestings(tbl_Order, tbl_OrderDetails);

            _ticketService.UpdateTicketBySellCount(tbl_Tickets, tbl_OrderDetails);
            var tbl_SaleLog = _saleLogService.addSaleLog(tbl_Order);

            try
            {
                _orderService.BeginTran();
                _orderService.Add(tbl_Order);
                _orderDetailService.Add(tbl_OrderDetails);
                _ticketTestingService.Add(tbl_Ticket_Testing);
                _ticketService.Update(tbl_Tickets);
                _noticeOrderConsumedService.Add(tbl_Order, tbl_OrderDetails, business);
                _orderTravelNoticeService.Add(tbl_Order, business);
                _saleLogService.Add(tbl_Order);
                _orderService.CommitTran();
            }
            catch (Exception ex)
            {
                _orderService.RollbackTran();
                result.Head.Code     = "113021";
                result.Head.Describe = "订单创建异常,订单创建失败";
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            result.Body = new OrderCreateInfo
            {
                OtaOrderId  = tbl_Order.OTAOrderNo,
                OrderId     = tbl_Order.OrderNo,
                OrderStatus = "OREDER_SUCCESS",
                Item        = new List <OrderCreateItem>()
            };
            tbl_OrderDetails = _orderDetailService.GetList(tbl_Order.OrderNo);
            foreach (var row in tbl_OrderDetails)
            {
                result.Body.Item.Add(new OrderCreateItem
                {
                    OtaOrderDetailId = row.OtaOrderDetailId,
                    ProductId        = row.TicketId.ToString(),
                    useDate          = row.ValidityDateStart.ToString("yyyy-MM-dd"),
                    CertificateNo    = row.CertificateNO,
                    quantity         = 500000
                });
            }
            result.Head.Code     = "000000";
            result.Head.Describe = "成功";
            return(PageDataResult.Data(result, business.Saltcode.ToString()));
        }
        /// <summary>
        /// 取消订单详情
        /// </summary>
        /// <param name="orderInfo"></param>
        private PageResult CancelOrder(OrderCancelRequest request, Tbl_OTABusiness business)
        {
            string orderId             = request.Body.OrderInfo.OrderId;
            OrderCancelResponse result = new OrderCancelResponse
            {
                Head = HeadResult.V1
            };
            var validResult = _orderService.ValidDataForOrderCancelRequest(request, business.Id);

            if (!validResult.Status)
            {
                result.Head.Code     = validResult.Code;
                result.Head.Describe = validResult.Message;
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            var tbl_Order   = _orderService.Get(orderId);
            var checkResult = _orderDetailService.CheckOrderDetailIsCanncel(orderId);

            if (!checkResult.Status)
            {
                result.Head.Code     = checkResult.Code;
                result.Head.Describe = checkResult.Message;
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            try
            {
                _orderService.BeginTran();
                foreach (var row in checkResult.List)
                {
                    //添加退款记录
                    var tbl_RefundDetail = _refundDetailService.Add(row);
                    //更新订单详情的状态:为已退款
                    _orderDetailService.UpdateOrderDetailForRefund(row);
                    //更新票的日售票数
                    _ticketService.UpdateTicketBySellCount(row);
                    //添加日志
                    _saleLogService.Add(tbl_RefundDetail);
                }
                //退激活票时,同步删除验票表存在的数据
                _ticketTestingService.Delete(tbl_Order.OrderNo);
                //提交事物
                _orderService.CommitTran();
            }
            catch
            {
                _orderService.RollbackTran();
                result.Head.Code     = "114012";
                result.Head.Describe = "订单取消失败,系统出错";
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            result.Body = new FengjingSDK461.Model.Response.OrderCancelInfo
            {
                Message = "成功"
            };
            result.Head.Code     = "000000";
            result.Head.Describe = "成功";
            return(PageDataResult.Data(result, business.Saltcode.ToString()));

            //try
            //{
            //    //电子票发送退票短信
            //    _smsService.RefundSend(checkResult.List, tbl_Order.Mobile);
            //    result.Head.Code = "000000";
            //    result.Head.Describe = "成功";
            //    return PageDataResult.Data(result, business.Saltcode.ToString());
            //}
            //catch (Exception ex)
            //{
            //    result.Head.Code = "000003";
            //    result.Head.Describe = "取消订单成功,发送退票短信失败";
            //    return PageDataResult.Data(result, business.Saltcode.ToString());
            //}
        }