/// <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())); }
/// <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); }
/// <summary> /// 创建单个产品订单 /// </summary> /// <param name="request"></param> /// <returns></returns> public OrderSingleCreateResponse SingleCreateOrder(OrderSingleCreateRequest request) { request.Head = RequestHead(); string url = _website + "order/singleCreate"; var result = PostService(request, url); if (!string.IsNullOrEmpty(result.Data)) { return(Base64Helper.Base64EncodeToObject <OrderSingleCreateResponse>(result.Data)); } return(new OrderSingleCreateResponse { Head = new HeadResponse { Code = "900001", Describe = "数据格式不正确" } }); }
/// <summary> /// 创建单个产品订单 /// </summary> /// <param name="request"></param> /// <returns></returns> public static OrderSingleCreateResponse SingleCreateOrder(OrderSingleCreateRequest request) { request.Head = new HeadRequest { InvokeTime = DateTime.Now.ToString("yyyy-MM-dd"), InvokeUser = key, ProtocolVersion = "V1" }; string url = apiUrl + "order/singleCreate"; var result = dooPost(request, url).Result; if (!string.IsNullOrEmpty(result.Data)) { return(Base64Helper.Base64EncodeToObject <OrderSingleCreateResponse>(result.Data)); } return(new OrderSingleCreateResponse { Head = new HeadResponse { Describe = "数据格式不正确" } }); }
/// <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())); }
/// <summary> /// 创建单个订单基础数据验证 /// </summary> /// <param name="request"></param> /// <returns></returns> public DataValidResult ValidDataForOrderSingleCreateRequest(OrderSingleCreateRequest request, OrderSingleCreateResponse response) { var orderInfo = request.Body.OrderInfo; var result = new DataValidResult { Status = false }; if (orderInfo.ContactPerson == null) { result.Code = "113001"; result.Message = "创建订单异常,取票人信息为空"; return(result); } if (string.IsNullOrEmpty(orderInfo.ContactPerson.Name)) { result.Code = "113002"; result.Message = "创建订单异常,取票人姓名不能为空"; return(result); } if (string.IsNullOrEmpty(orderInfo.ContactPerson.Mobile)) { result.Code = "113003"; result.Message = "创建订单异常,取票人手机号码不能为空"; return(result); } if (!RegexValidation.IsCellPhone(orderInfo.ContactPerson.Mobile)) { result.Code = "113004"; result.Message = "创建订单异常,取票人手机号码异常"; return(result); } if (!string.IsNullOrEmpty(orderInfo.ContactPerson.CardType)) { switch (orderInfo.ContactPerson.CardType.ToUpper()) { case "ID_CARD": if (!string.IsNullOrEmpty(orderInfo.ContactPerson.CardNo)) { if (!RegexValidation.IsIdCard(orderInfo.ContactPerson.CardNo)) { result.Code = "113005"; result.Message = "创建订单异常,游客身份证信息输入有误"; return(result); } } break; case "HUZHAO": case "TAIBAO": case "GANGAO": case "OTHER": break; } } if (string.IsNullOrEmpty(orderInfo.OrderOtaId)) { result.Code = "113006"; result.Message = "创建订单异常,OTA订单id不能为空"; return(result); } if (orderInfo.OrderQuantity <= 0) { result.Code = "113008"; result.Message = "创建订单异常,订票总数量不能小于1"; return(result); } if (!orderInfo.VisitDate.IsDataTime()) { result.Code = "113009"; result.Message = "创建订单异常,游玩日期格式不合法"; return(result); } if (orderInfo.VisitDate.ToDataTime() < DateTime.Now.Date) { result.Code = "113009"; result.Message = "创建订单异常,游玩日期不合法"; return(result); } if (orderInfo.Ticket == null) { result.Code = "113015"; result.Message = "创建订单异常,购买产品的数据不合法"; return(result); } if (orderInfo.Ticket.Quantity != orderInfo.OrderQuantity) { result.Code = "113011"; result.Message = "创建订单异常,购买产品的总数量和订票总数量不符"; return(result); } if (orderInfo.Ticket.Quantity <= 0) { result.Code = "113013"; result.Message = "创建订单异常,购买产品的游客人数不能小于1"; return(result); } if (orderInfo.Ticket.ProductId <= 0) { result.Code = "113014"; result.Message = "创建订单异常,购买产品的id不合法"; return(result); } //验证OTA订单id是否已存在 var tbl_Order = GetOrderBy(request.Body.OrderInfo.OrderOtaId); if (tbl_Order != null) { var tbl_OrderDetail = _orderDetailService.Get(tbl_Order.OrderNo); result.Code = "000000"; result.Message = "成功,重复提交订单"; response.Body.OrderId = tbl_Order.OrderNo; response.Body.OtaOrderId = tbl_Order.OTAOrderNo; response.Body.CertificateNo = tbl_OrderDetail.CertificateNO; response.Body.Code = tbl_OrderDetail.QRcode; response.Body.OrderStatus = "OREDER_SUCCESS"; return(result); } result.Status = true; return(result); }
/// <summary> /// 下单验证基础数据验证 /// </summary> /// <param name="request"></param> /// <returns></returns> public DataValidResult ValidDataForVerifyOrderRequest(OrderSingleCreateRequest request) { var orderInfo = request.Body.OrderInfo; var result = new DataValidResult { Status = false }; if (orderInfo.ContactPerson == null) { result.Code = "113001"; result.Message = "创建订单异常,取票人信息为空"; return(result); } if (string.IsNullOrEmpty(orderInfo.ContactPerson.Name)) { result.Code = "113002"; result.Message = "创建订单异常,取票人姓名不能为空"; return(result); } if (string.IsNullOrEmpty(orderInfo.ContactPerson.Mobile)) { result.Code = "113003"; result.Message = "创建订单异常,取票人手机号码不能为空"; return(result); } if (!RegexValidation.IsCellPhone(orderInfo.ContactPerson.Mobile)) { result.Code = "113004"; result.Message = "创建订单异常,取票人手机号码异常"; return(result); } if (!string.IsNullOrEmpty(orderInfo.ContactPerson.CardType)) { switch (orderInfo.ContactPerson.CardType.ToUpper()) { case "ID_CARD": if (!string.IsNullOrEmpty(orderInfo.ContactPerson.CardNo)) { if (!RegexValidation.IsIdCard(orderInfo.ContactPerson.CardNo)) { result.Code = "113005"; result.Message = "创建订单异常,游客身份证信息输入有误"; return(result); } } break; case "HUZHAO": case "TAIBAO": case "GANGAO": case "OTHER": break; } } if (orderInfo.OrderQuantity <= 0) { result.Code = "113008"; result.Message = "创建订单异常,订票总数量不能小于1"; return(result); } if (!orderInfo.VisitDate.IsDataTime()) { result.Code = "113009"; result.Message = "创建订单异常,游玩日期格式不合法"; return(result); } if (orderInfo.VisitDate.ToDataTime() < DateTime.Now.Date) { result.Code = "113009"; result.Message = "创建订单异常,游玩日期不合法"; return(result); } if (orderInfo.Ticket == null) { result.Code = "113015"; result.Message = "创建订单异常,购买产品的数据不合法"; return(result); } if (orderInfo.Ticket.Quantity <= 0) { result.Code = "113013"; result.Message = "创建订单异常,购买产品的游客人数不能小于1"; return(result); } if (orderInfo.Ticket.ProductId <= 0) { result.Code = "113014"; result.Message = "创建订单异常,购买产品的id不合法"; return(result); } result.Status = true; return(result); }
/// <summary> /// 下单验证 /// </summary> private void VerifyOrder() { OrderSingleCreateRequest request = new OrderSingleCreateRequest { Body = new OrderSingleCreateBody { OrderInfo = new OrderSingleInfo { OrderOtaId = textBox4.Text, OrderPayStatus = 1, OrderPrice = 20, OrderQuantity = 1, Ticket = new ProductItem(), VisitDate = textTime.Text, ContactPerson = new ContactPerson { BuyName = textBox5.Text, Name = textBox6.Text, Mobile = textBox7.Text, CardType = comboBox2.Text, CardNo = textBox8.Text } } } }; List <ProductItem> selectItem = new List <ProductItem>(); for (int i = 0; i < dataGridView1.Rows.Count; i++) { if (dataGridView1.Rows[i].Selected == true) { selectItem.Add(new ProductItem { ProductId = Convert.ToInt32(dataGridView1.Rows[i].Cells[1].Value), ProductName = dataGridView1.Rows[i].Cells[0].Value.ToString(), SellPrice = Convert.ToDecimal(dataGridView1.Rows[i].Cells[3].Value), Quantity = Convert.ToInt32(dataGridView1.Rows[i].Cells[4].Value) }); var dd = dataGridView1.Rows[i].Cells[1].Value.ToString(); } } if (selectItem.Count <= 0) { MessageBox.Show("请选择你要购买的产品"); return; } var ticketInfo = selectItem.FirstOrDefault(); request.Body.OrderInfo.Ticket = ticketInfo; request.Body.OrderInfo.OrderPrice = ticketInfo.SellPrice * ticketInfo.Quantity; request.Body.OrderInfo.OrderQuantity = ticketInfo.Quantity; var result = Class1.VerifyOrder(request); if (result.Body != null) { textBox3.Text = result.Body.OrderId; textBox9.Text = request.Body.OrderInfo.OrderPrice.ToString(); textBox10.Text = request.Body.OrderInfo.OrderQuantity.ToString(); } SetMsg("下单验证接口: \r\n" + JsonHelper.ObjectToJson(result)); textBox4.Text = OrderHelper.GenerateOrderNo(); }