/// <summary>
        /// 下单验证接口--单个产品
        /// </summary>
        /// <param name="request"></param>
        /// <param name="business"></param>
        /// <returns></returns>
        private PageResult VerifySingleOrder(OrderSingleCreateRequest request, Tbl_OTABusiness business)
        {
            var orderInfo = request.Body.OrderInfo;
            OrderSingleCreateResponse result = new OrderSingleCreateResponse
            {
                Head = HeadResult.V1,
                Body = new OrderSingleCreateInfo
                {
                    Inventory = 0
                }
            };
            var validResult = _orderService.ValidDataForVerifyOrderRequest(request);

            if (!validResult.Status)
            {
                result.Head.Code     = validResult.Code;
                result.Head.Describe = validResult.Message;
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            var tbl_Ticket      = _ticketService.GetTicket(orderInfo.Ticket.ProductId, business.ScenicId, orderInfo.VisitDate.ToDataTime());
            var validDataResult = _ticketService.ValidDataForOrderSingleCreateRequest(request, business, tbl_Ticket, result);

            if (!validDataResult.Status)
            {
                result.Head.Code     = validDataResult.Code;
                result.Head.Describe = validDataResult.Message;
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            result.Head.Code        = "000000";
            result.Head.Describe    = "成功";
            result.Body.OrderStatus = "OREDER_SUCCESS";
            return(PageDataResult.Data(result, business.Saltcode.ToString()));
        }
Esempio n. 2
0
        private static XJ_Order PopulateOTAOrder(OtaOrderModel row, Tbl_OTABusiness business, Tbl_Ticket ticket)
        {
            var orderInfo = new XJ_Order
            {
                OrderOtaId    = row.OrderNo,
                OTABusinessId = business.Id,
                OrderPrice    = row.ProductPrice,
                OrderQuantity = row.ProductCount,
                TicketList    = new List <XJ_ProductItem>(),
                VisitDate     = row.StartDate.ToDataTimeFormat(),
                ContactPerson = new XJ_ContactPerson
                {
                    BuyName  = row.LinkName,
                    Name     = row.LinkName,
                    Mobile   = row.LinkPhone,
                    CardType = "ID_CARD",
                    CardNo   = row.IdCard
                }
            };

            orderInfo.TicketList.Add(new XJ_ProductItem
            {
                ProductId     = ticket.TicketId,
                ProductName   = ticket.TicketName,
                SellPrice     = ticket.SalePrice,
                Quantity      = row.ProductCount,
                OrderNo       = row.OrderNo,
                OrderDetailId = row.OrderId,
                CodeStr       = row.Code,
                StartDate     = row.StartDate.ToDataTimeFormat(),
                EndDate       = row.EndDate.ToDataTimeFormat(),
                State         = StateAction.GetState(row.OrderState)
            });
            return(orderInfo);
        }
        /// <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()));
        }
        private PageResult UpdateOrder(OrderUpdateRequest request, Tbl_OTABusiness business)
        {
            string orderId             = request.Body.OrderInfo.OrderId;
            OrderUpdateResponse result = new OrderUpdateResponse
            {
                Head = HeadResult.V1,
            };
            var validResult = _orderService.ValidDataForOrderUpdateRequest(request);

            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);

            if (tbl_Order == null)
            {
                result.Head.Code     = "116011";
                result.Head.Describe = "修改订单异常,订单不存在";
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            if (!tbl_Order.CanModify)
            {
                result.Head.Code     = "116012";
                result.Head.Describe = "修改订单异常,订单不能修改";
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            if (tbl_Order.CanModify && tbl_Order.CanModifyTime < request.Body.OrderInfo.VisitDate.ToDataTime())
            {
                result.Head.Code     = "116013";
                result.Head.Describe = "修改订单异常,填写的游玩时间超过产品最后修改时间";
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            try
            {
                _orderService.BeginTran();
                _orderService.UpdateOrder(tbl_Order, request);
                _orderDetailService.UpdateOrderDetail(request);
                _orderService.CommitTran();
                result.Body = new OrderUpdateResponseBody()
                {
                    OrderId = tbl_Order.OrderNo
                };
            }
            catch (Exception ex)
            {
                _orderService.RollbackTran();
                result.Head.Code     = "116014";
                result.Head.Describe = "修改订单异常,订单修改失败";
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            result.Head.Code     = "000000";
            result.Head.Describe = "成功";
            return(PageDataResult.Data(result, business.Saltcode.ToString()));
        }
        /// <summary>
        /// 验证单个订单数据
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public DataValidResult ValidDataForOrderSingleCreateRequest(
            OrderSingleCreateRequest request,
            Tbl_OTABusiness business,
            Tbl_Ticket tbl_Ticket,
            OrderSingleCreateResponse response)
        {
            var result = new DataValidResult {
                Status = false
            };
            var ticket = request.Body.OrderInfo.Ticket;

            if (tbl_Ticket == null)
            {
                result.Code    = "113019";
                result.Message = "创建订单失败,选择的游玩日期超出选购产品的有效期或者选购的产品无效";
                return(result);
            }
            var existence = _otaTicketRelationService.CheckIsTicketId(business.Id, tbl_Ticket.TicketId);

            if (!existence)
            {
                result.Code    = "113019";
                result.Message = "创建订单失败,选择的游玩日期超出选购产品的有效期或者选购的产品无效";
                return(result);
            }
            if (tbl_Ticket.SalePrice != ticket.SellPrice)
            {
                result.Code    = "113020";
                result.Message = "创建订单失败,价格不一致";
                return(result);
            }
            //日销售限额为空或者0  为不限制
            if (tbl_Ticket.StockCount.HasValue && tbl_Ticket.StockCount.Value > 0)
            {
                if (!tbl_Ticket.LastUpdateTime.HasValue || tbl_Ticket.LastUpdateTime.Value.Date != DateTime.Now.Date)
                {
                    tbl_Ticket.SellCount = 0;
                }
                var sellCount = tbl_Ticket.SellCount.HasValue ? tbl_Ticket.SellCount.Value : 0;//库存
                response.Body.Inventory = tbl_Ticket.StockCount.Value - sellCount;
                if (sellCount + ticket.Quantity > tbl_Ticket.StockCount.Value)
                {
                    //开启了库存限制,购买数量超过了库存
                    result.Code    = "113026";
                    result.Message = "创建订单失败,库存不足";
                    return(result);
                }
            }
            else
            {
                response.Body.Inventory = 50000;
            }

            result.Status = true;
            return(result);
        }
        private PageResult SendMessage(MessageSendRequest request, Tbl_OTABusiness business)
        {
            MessageSendOrderInfo orderInfo = request.Body.OrderInfo;
            MessageSendResponse  result    = new MessageSendResponse
            {
                Head = HeadResult.V1
            };
            var validResult = _orderService.ValidDataForMessageSendRequest(request);

            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(orderInfo.OrderId);

            if (tbl_Order == null)
            {
                result.Head.Code     = "117004";
                result.Head.Describe = "(重)发送入园凭证短信异常,订单不存在";
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            var tbl_OrderDetails = _orderDetailService.GetList(tbl_Order.OrderNo);

            if (tbl_OrderDetails.FirstOrDefault(a => a.EticektSendQuantity >= 5) != null)
            {
                result.Head.Code     = "117006";
                result.Head.Describe = "(重)发送入园凭证短信异常,发送次数不能超过5次";
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            try
            {
                var sendResult = _smsService.Send(tbl_OrderDetails, tbl_Order.Mobile);
                if (sendResult.Status)
                {
                    result.Body = new MessageSendResponseBody
                    {
                        Message = "OK"
                    };
                    result.Head.Code     = "000000";
                    result.Head.Describe = "成功";
                    return(PageDataResult.Data(result, business.Saltcode.ToString()));
                }
                result.Head.Code     = "117005";
                result.Head.Describe = "(重)发送入园凭证短信异常,发送失败";
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            catch (Exception ex)
            {
                result.Head.Code     = "117005";
                result.Head.Describe = "(重)发送入园凭证短信异常,发送失败";
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
        }
        /// <summary>
        /// 下单验证接口
        /// </summary>
        /// <param name="request"></param>
        /// <param name="business"></param>
        /// <returns></returns>
        private PageResult VerifyOrder(OrderCreateRequest request, Tbl_OTABusiness business)
        {
            var orderInfo = request.Body.OrderInfo;
            OrderCreateResponse result = new OrderCreateResponse
            {
                Head = HeadResult.V1,
                Body = new OrderCreateInfo
                {
                    Item = new List <OrderCreateItem>()
                }
            };
            var validResult = _orderService.ValidDataForOrderVerifyRequest(request);

            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;
                result.Body.Item.Add(new OrderCreateItem
                {
                    ProductId = request.Body.OrderInfo.TicketList[0].ProductId.ToString(),
                    useDate   = request.Body.OrderInfo.VisitDate,
                    quantity  = 0
                });
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }

            result.Head.Code        = "000000";
            result.Head.Describe    = "成功";
            result.Body.OrderStatus = "OREDER_SUCCESS";
            foreach (var row in tbl_Tickets)
            {
                result.Body.Item.Add(new OrderCreateItem
                {
                    ProductId = row.TicketId.ToString(),
                    useDate   = request.Body.OrderInfo.VisitDate,
                    quantity  = 500000
                });
            }

            return(PageDataResult.Data(result, business.Saltcode.ToString()));
        }
Esempio n. 8
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_OTABusiness business)
        {
            var tbl_OrderTravelNotice = new Tbl_OrderTravelNotice
            {
                SequenceId  = DateTime.Now.ToString("yyyyMMdd") + Guid.NewGuid().ToString("N"),
                ScenicId    = tbl_Order.ScenicId,
                IdentityKey = business.IdentityKey,
                OrderNo     = tbl_Order.OrderNo,
                OtaOrderId  = tbl_Order.OTAOrderNo,
                RunCount    = 0,
                CreateTime  = DateTime.Now
            };

            _orderTravelNoticeRepository.Add(tbl_OrderTravelNotice);
        }
        /// <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);
        }
Esempio n. 10
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);
        }
Esempio n. 11
0
        private static XJ_Order PopulateOrder(OrderModel row, Tbl_OTABusiness business, List <Tbl_Ticket> tickets)
        {
            var orderInfo = new XJ_Order
            {
                OrderOtaId    = row.OrderNo,
                OTABusinessId = business.Id,
                OrderPrice    = row.Money.ToDouble(),
                OrderQuantity = row.OrderItems.Sum(a => a.Number),
                TicketList    = new List <XJ_ProductItem>(),
                VisitDate     = row.PlayDate.ToDataTimeFormat(),
                ContactPerson = new XJ_ContactPerson
                {
                    BuyName  = row.LinkName,
                    Name     = row.LinkName,
                    Mobile   = row.LinkPhone,
                    CardType = "ID_CARD",
                    CardNo   = row.LinkIdCard
                }
            };

            foreach (var item in row.OrderItems)
            {
                var ticket = tickets.FirstOrDefault(a => a.Code == item.ProductCode);
                orderInfo.TicketList.Add(new XJ_ProductItem
                {
                    ProductId     = ticket.TicketId,
                    ProductName   = ticket.TicketName,
                    SellPrice     = ticket.SalePrice,
                    Quantity      = item.Number,
                    OrderNo       = item.OrderNo,
                    OrderDetailId = item.ItemId,
                    CodeStr       = item.Code,
                    StartDate     = item.StartDate.ToDataTimeFormat(),
                    EndDate       = item.EndDate.ToDataTimeFormat(),
                    State         = StateAction.GetState(item.State)
                });
            }

            return(orderInfo);
        }
Esempio n. 12
0
        /// <summary>
        /// 创建单个产品订单
        /// </summary>
        /// <param name="orderInfo"></param>
        /// <returns></returns>
        public Tbl_Order AddOrder(OrderSingleInfo request, Tbl_OTABusiness business)
        {
            //创建订单号
            string orderNo = OrderHelper.GenerateOrderNo();
            var    order   = Get(orderNo);

            if (order != null)
            {
                orderNo = OrderHelper.GenerateOrderNo();
            }
            int idType = GetIdCardType(request.ContactPerson.CardType);

            //订单
            Tbl_Order tbl_Order = new Tbl_Order
            {
                OrderNo           = orderNo,
                OTABusinessId     = business.Id,
                OTAOrderNo        = request.OrderOtaId,
                TicketSource      = (int)TicketSourceStatus.Ota,
                PayType           = (int)PayStatus.NoPayStatus,
                PayAccount        = "",
                PayTradeNo        = "",
                SellerId          = 0,
                Price             = 0,
                Linkman           = request.ContactPerson.Name,
                Mobile            = request.ContactPerson.Mobile,
                OrderStatus       = (int)OrderDataStatus.NoPay,
                CreateTime        = DateTime.Now,
                ValidityDateStart = request.VisitDate.ToDataTime(),
                ValidityDateEnd   = request.VisitDate.ToDataTime(),
                UsedQuantity      = 0,
                Remark            = "",
                IDType            = idType,
                IDCard            = request.ContactPerson.CardNo,
                CreateUserId      = 0
            };

            return(tbl_Order);
        }
        /// <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="request"></param>
        /// <param name="business"></param>
        /// <returns></returns>
        private PageResult PaySingleOrder(OrderSingleCreateRequest request, Tbl_OTABusiness business)
        {
            var orderInfo = request.Body.OrderInfo;
            OrderSingleCreateResponse result = new OrderSingleCreateResponse
            {
                Head = HeadResult.V1,
                Body = new OrderSingleCreateInfo
                {
                    Inventory = 0
                }
            };
            var validResult = _orderService.ValidDataForOrderSingleCreateRequest(request, result);

            if (!validResult.Status)
            {
                result.Head.Code     = validResult.Code;
                result.Head.Describe = validResult.Message;
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            var tbl_Ticket      = _ticketService.GetTicket(orderInfo.Ticket.ProductId, business.ScenicId, orderInfo.VisitDate.ToDataTime());
            var validDataResult = _ticketService.ValidDataForOrderSingleCreateRequest(request, business, tbl_Ticket, result);

            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_OrderDetail = _orderDetailService.AddOrderDetail(orderInfo, tbl_Order, tbl_Ticket);

            _orderService.UpdateOrder(tbl_Order, tbl_OrderDetail);
            var tbl_Ticket_Testing = _ticketTestingService.AddTicketTesting(tbl_Order, tbl_OrderDetail);

            try
            {
                _orderService.BeginTran();
                _orderService.Add(tbl_Order);
                _orderDetailService.Add(tbl_OrderDetail);
                _ticketTestingService.Add(tbl_Ticket_Testing);
                _ticketService.UpdateTicketBySellCount(tbl_Ticket, tbl_OrderDetail);
                _noticeOrderConsumedService.Add(tbl_Order, tbl_OrderDetail, 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.Head.Code          = "000000";
            result.Head.Describe      = "成功";
            result.Body.OrderId       = tbl_Order.OrderNo;
            result.Body.OtaOrderId    = tbl_Order.OTAOrderNo;
            result.Body.CertificateNo = tbl_OrderDetail.CertificateNO;
            result.Body.Code          = tbl_OrderDetail.QRcode;
            result.Body.OrderStatus   = "OREDER_SUCCESS";
            return(PageDataResult.Data(result, business.Saltcode.ToString()));
        }
        private PageResult QueryOrder(OrderQueryRequest request, Tbl_OTABusiness business)
        {
            string             orderId = request.Body.OrderId;
            OrderQueryResponse result  = new OrderQueryResponse
            {
                Head = HeadResult.V1,
                Body = new OrderQueryBody()
            };
            var validResult = _orderService.ValidDataForOrderQueryRequest(request);

            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, request.Body.OtaOrderId);

            if (tbl_Order == null)
            {
                result.Head.Code     = "115002";
                result.Head.Describe = "查询订单异常,订单不存在";
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            result.Body.OrderInfo = new OrderQueryInfo
            {
                OrderId       = tbl_Order.OrderNo,
                OrderQuantity = tbl_Order.BookCount,
                OrderPrice    = tbl_Order.TotalAmount,
                VisitDate     = tbl_Order.ValidityDateEnd.ToString("yyyy-MM-dd"),
                ContactPerson = new OrderQueryContactPerson
                {
                    Name     = tbl_Order.Linkman,
                    Mobile   = tbl_Order.Mobile,
                    CardNo   = tbl_Order.IDCard,
                    CardType = ((CredentialsStatus)tbl_Order.IDType).GetDescriptionByName()
                },
                EticketInfo = new List <OrderQueryTicketInfo>()
            };
            var orderDetails = _orderDetailService.GetList(tbl_Order.OrderNo);
            var tickets      = _ticketService.GetTickets(orderDetails.Select(a => a.TicketId).ToList());

            foreach (var row in orderDetails)
            {
                var ticket = tickets.FirstOrDefault(a => a.TicketId == row.TicketId);
                var orderQueryTicketInfo = new OrderQueryTicketInfo
                {
                    OtaOrderDetailId = row.OtaOrderDetailId,
                    EticektNo        = row.CertificateNO,
                    SellPrice        = row.Price,
                    MarketPrice      = ticket == null ? 0 : ticket.MarkPrice.Value,
                    EticektSend      = 1,
                    ProductId        = row.TicketId,
                    ProductName      = row.TicketName,
                    EticketQuantity  = row.Quantity,
                    UseQuantity      = row.UsedQuantity == null ? 0 : row.UsedQuantity.Value,
                    CreateTime       = row.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                    CancelTime       = row.CancelTime.HasValue ? row.CancelTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
                    DelayCheckTime   = row.DelayCheckTime.HasValue ? row.DelayCheckTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : "",
                    UseEndDate       = row.ValidityDateStart.ToString("yyyy-MM-dd"),
                    UseStartDate     = row.ValidityDateEnd.ToString("yyyy-MM-dd"),
                };
                _orderDetailService.GetOrderDetailsDataStatus(row, orderQueryTicketInfo);
                result.Body.OrderInfo.EticketInfo.Add(orderQueryTicketInfo);
            }
            result.Head.Code     = "000000";
            result.Head.Describe = "成功";
            return(PageDataResult.Data(result, business.Saltcode.ToString()));
        }
Esempio n. 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, List <Tbl_OrderDetail> tbl_OrderDetails, Tbl_OTABusiness business)
        {
            var list = new List <Tbl_NoticeOrderConsumed>();

            foreach (var row in tbl_OrderDetails)
            {
                list.Add(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,
                    OtaOrderDetailId  = row.OtaOrderDetailId,
                    OrderDetailNumber = row.Number,
                    Count             = row.Quantity,
                    IsTaken           = false,
                    RunCount          = 0,
                    CreateTime        = DateTime.Now
                });
            }
            _noticeOrderConsumedRepository.Add(list);
        }
        /// <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);

            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
            {
                using (SqlConnection connection = new SqlConnection(DbConfig.TicketConnectionString))
                {
                    connection.Open();
                    var trans = connection.BeginTransaction();
                    SqlBulkInsert.Inert(tbl_Order, connection, trans);
                    SqlBulkInsert.Inert(tbl_OrderDetails, connection, trans);
                    SqlBulkInsert.Inert(tbl_Ticket_Testing, connection, trans);
                    _ticketService.UpdateTicket(tbl_Tickets, connection, trans);
                    SqlBulkInsert.Inert(tbl_SaleLog, connection, trans);
                    trans.Commit();
                }
            }
            catch (Exception ex)
            {
                result.Head.Code     = "113021";
                result.Head.Describe = "订单创建异常,订单创建失败";
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            result.Body = new OrderCreateInfo
            {
                OrderId     = tbl_Order.OrderNo,
                OrderStatus = "OREDER_SUCCESS"
            };
            try
            {
                var sendResult = _smsService.Send(tbl_OrderDetails, tbl_Order.Mobile);
                if (sendResult.Status)
                {
                    result.Head.Code     = "000000";
                    result.Head.Describe = "成功";
                    return(PageDataResult.Data(result, business.Saltcode.ToString()));
                }
                result.Head.Code     = "000001";
                result.Head.Describe = "订单创建成功,发送入园凭证短信失败";
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
            catch (Exception ex)
            {
                result.Head.Code     = "000001";
                result.Head.Describe = "订单创建成功,发送入园凭证短信失败";
                return(PageDataResult.Data(result, business.Saltcode.ToString()));
            }
        }