/// <summary> /// 验证身份证是否存在 /// </summary> /// <param name="idCard">身份证</param> /// <param name="msg">返回的消息</param> /// <param name="model">票的信息</param> /// <returns>存在true,不存在false</returns> public bool CheckTicketIdCard(string idCard, out string msg, out TicketTestingModel model) { model = new TicketTestingModel(); var orderDetail = _orderDetailService.GetByIDCard(idCard); if (orderDetail != null) { if (orderDetail.OrderStatus == (int)OrderDetailsDataStatus.Canncel || orderDetail.OrderStatus == (int)OrderDetailsDataStatus.Refund) { msg = MessageKey.TicketRefund; return(false); } model.ValidityDateStart = orderDetail.ValidityDateStart; model.ValidityDateEnd = orderDetail.ValidityDateEnd; model.DelayCheckTime = orderDetail.DelayCheckTime; model.Price = orderDetail.Price; } var entity = _ticketTestingRepository.FirstOrDefault(a => a.IDCard == idCard); var isValid = CheckTicket(entity, out msg); if (isValid) { model.TicketTestingId = entity.TicketTestingId; model.Quantity = entity.Quantity.Value; model.UsedQuantity = entity.UsedQuantity; } return(isValid); }
/// <summary> /// 验证二维码是否存在 /// </summary> /// <param name="qRcode">二维码</param> /// <param name="deviceName">设备名,唯一标识符</param> /// <param name="msg">返回的消息</param> /// <param name="model">票的信息</param> /// <returns>存在true,不存在false</returns> public bool CheckTicketQrCode(string qRcode, string deviceName, out string msg, out TicketTestingModel model) { model = new TicketTestingModel(); var orderDetail = _orderDetailService.GetByQRcode(qRcode); if (orderDetail == null) { msg = MessageKey.InvalidTicket; return(false); } if (orderDetail.OrderStatus == (int)OrderDetailsDataStatus.Canncel || orderDetail.OrderStatus == (int)OrderDetailsDataStatus.Refund) { msg = MessageKey.TicketRefund; return(false); } if (orderDetail.OrderStatus == (int)OrderDetailsDataStatus.Consume) { msg = MessageKey.TicketEmploy; return(false); } var isCheckTicket = _ticketService.CheckTicketIsDoorGate(orderDetail, deviceName); if (!isCheckTicket) { msg = MessageKey.TicketNoValidate; return(false); } model.ValidityDateStart = orderDetail.ValidityDateStart; model.ValidityDateEnd = orderDetail.ValidityDateEnd; model.DelayCheckTime = orderDetail.DelayCheckTime; model.Price = orderDetail.Price; model.TicketId = orderDetail.TicketId; var entity = Get(orderDetail.OrderNo, qRcode); var isValid = CheckTicket(entity, out msg); if (isValid) { model.TicketTestingId = entity.TicketTestingId; model.Quantity = entity.Quantity.Value; model.UsedQuantity = entity.UsedQuantity; UpdateForCheckDate(entity); } return(isValid); }
/// <summary> /// 验票的判断方法 /// </summary> /// <param name="obj"></param> /// <param name="type"></param> /// <param name="model"></param> /// <param name="msg"></param> /// <returns></returns> private Result <TicketResult> TicketResult(CheckTicket_Object obj, SourceType type, TicketTestingModel model, string msg) { var ticketSession = new TicketSession { OrderID = Guid.NewGuid().ToString("N"), Fingerprint_Pass = false, Fingerprint_Token = string.Empty, IDCard_Number = string.Empty, IDCard_Pass = false, TicketNo_Pass = false, Ticket_No = obj.Number, CallCount = 0, //ParkID = "罗湖山5A",//可以用于景区id DeviceID = obj.Device.DeviceName//可以用于设备id }; DocomSDK.Ticket.Data.Ticket ticket = new DocomSDK.Ticket.Data.Ticket() { BeginDate = model.ValidityDateStart, //开始日期 ExpiryDate = model.ValidityDateEnd, //结束日期 CapacitySize = model.Quantity, //总人数 UsageCount = model.UsedQuantity, // 已入园人数 NeedIDCard = false, //是否验证身份证 NeedFinger = false, Number = obj.Number, //门票条码 Price = 0, //价格 TicketSource = obj.SensorSource, //门票来源 TicketType = type.ToString(), //门票类型 UR_Text1 = model.TicketTestingId.ToString(), //使用预留字段 }; //var isCheckTicket = _ticketService.CheckTicketIsDoorGate(model.TicketId, obj.Device.DeviceName); //if (!isCheckTicket) //{ // //门票在该通道不可使用(设置了闸机不验此票时提示) // return TicketDataResult.CheckTicketIsDoorGateResult(ticket); //} DateTime now = DateTime.Now; if (ticket.ExpiryDate.Date < now.Date) { //提示已超出有效日期 return(TicketDataResult.TicketOverdueResult(ticket)); } if (ticket.CapacitySize <= ticket.UsageCount) { //提示该票已用完 return(TicketDataResult.TicketOffResult(ticket, ticketSession)); } if (ticket.BeginDate.Date > now.Date) { //提示未到生效日期 return(TicketDataResult.TicketNotEnableResult(ticket)); } if (model.DelayCheckTime > now) { //该票未到入园时间 return(TicketDataResult.TicketNotDelayCheckTimeResult(ticket)); } //验证通过,通知开闸 return(TicketDataResult.VerifyPassResult(ticket, ticketSession, msg, msg)); }