Пример #1
0
        /// <summary>
        /// 扫描进入,请求检票
        /// </summary>
        /// <param name="obj">请求参数</param>
        public Result <TicketResult> Ticket_CheckTicket(CheckTicket_Object obj)
        {
            _log.Info("进入【请求检票】事件: Ticket_CheckTicket");
            _log.Info("得到数据: " + JsonHelper.ObjectToJsonStr(obj));

            obj.Number = obj.Number.Replace("\r", string.Empty).Replace("\n", string.Empty).Replace(" ", string.Empty);

            try
            {
                #region 判断设备是否存在
                string msg;
                bool   isState = _otaFacadeService.CheckDoorGate(obj.Device.DeviceName, out msg);
                if (!isState)
                {
                    _log.Info("设备不存在:" + obj.Device.DeviceName);
                    return(TicketDataResult.InvalidDeviceResult(msg));
                }
                #endregion
                //验票
                return(_otaFacadeService.TicketValid(obj));
            }
            catch (Exception ex)
            {
                _log.Error(ex);
                return(TicketDataResult.FailResult("系统异常,请联系管理员!"));
            }
        }
Пример #2
0
 /// <summary>
 /// 提交过闸结果
 /// </summary>
 /// <param name="obj">过闸结果</param>
 /// <returns></returns>
 public Result <TicketResult> Ticket_SubmitWalkPast(SubmitWalkPast_Object obj)
 {
     _log.Info("进入【提交过闸结果】事件: Ticket_SubmitWalkPast");
     _log.Info("得到数据: " + JsonHelper.ObjectToJsonStr(obj));
     try
     {
         _log.Info("本次过闸人数 Count: " + obj.Count);
         _log.Info("可用人数 CapacitySize: " + obj.Ticket.CapacitySize);
         _log.Info("已用人数 UsageCount: " + obj.Ticket.UsageCount);
         if (obj.Count <= 0)
         {
             _log.Info("通行超时,验票结束");
             return(TicketDataResult.TaskTerminationResult("通行超时,验票结束", "通行超时,验票结束"));
         }
         ////掌静脉
         //if (obj.Ticket != null && obj.Ticket.TicketType == SourceType.PalmVein.ToString())
         //{
         //    return TicketDataResult.TaskTerminationResult("验证通过,感谢您的光临", "验证通过,感谢您的光临");
         //}
         //条形码和二维码和身份证,将验票结果写入数据库
         if (obj.Ticket != null && (obj.Ticket.TicketType == SourceType.BarCode.ToString() || obj.Ticket.TicketType == SourceType.QRcode.ToString() || obj.Ticket.TicketType == SourceType.IdCard.ToString()))
         {
             _log.Info("条形码和二维码,更新状态");
             var ticket = _otaFacadeService.UpdateTicket(obj.Ticket.UR_Text1, obj.Count, obj.Device.DeviceName);
             if (ticket == null)
             {
                 _log.Info("ticket等于null---------------------------------------");
             }
             else
             {
                 obj.Ticket.UsageCount   = ticket.UsedQuantity;
                 obj.Ticket.CapacitySize = ticket.Quantity;
             }
         }
         //一票多人
         if (obj.Ticket != null && obj.Ticket.UsageCount < obj.Ticket.CapacitySize)
         {
             var session = obj.Session;
             session.IDCard_Pass      = false;
             session.Fingerprint_Pass = false;
             session.AdminConfirm     = false;
             return(Schedule_Ticket(obj.Ticket, session));
         }
         //年卡
         //if (obj.Ticket != null && obj.Ticket.TicketType == SourceType.YearTicket.ToString())
         //{
         //    //添加入园记录
         //    _otaFacadeService.AddYearTicketAdmissionRecord(obj.Ticket.Number);
         //}
         _log.Info("验证通过,感谢您的光临");
         _log.Info("结束【提交过闸结果】事件: Ticket_SubmitWalkPast");
         return(TicketDataResult.TaskTerminationResult("验证通过,感谢您的光临", "验证通过,感谢您的光临"));
     }
     catch (Exception ex)
     {
         _log.Error(ex);
         return(TicketDataResult.FailResult("系统异常,请联系管理员!"));
     }
 }
Пример #3
0
        /// <summary>
        /// 验票的流程及判断方法
        /// </summary>
        /// <param name="ticket"></param>
        /// <param name="session"></param>
        /// <returns></returns>
        private Result <TicketResult> Schedule_Ticket(DocomSDK.Ticket.Data.Ticket ticket, TicketSession session)
        {
            //先判断会话有否超时
            if (session == null)
            {
                return(TicketDataResult.FailResult("会话超时", "操作超时"));
            }

            //判断订单号及票号是否一致
            if (session.Ticket_No != ticket.Number)
            {
                return(TicketDataResult.FailResult("订单号码及票号不一致", "订单号码及票号不一致"));
            }

            //判断是否在有效期内
            DateTime now = DateTime.Now;

            //判断是否已超出有效日期
            if (ticket.ExpiryDate.Date < now.Date)
            {
                //提示已超出有效日期
                return(TicketDataResult.TicketOverdueResult(ticket));
            }
            //判断是否票已用完
            if (ticket.CapacitySize <= ticket.UsageCount)
            {
                return(TicketDataResult.TicketOffResult(ticket, session));
            }
            //判断是否未到生效日期
            if (ticket.BeginDate.Date > now.Date)
            {
                //提示未到生效日期
                return(TicketDataResult.TicketNotEnableResult(ticket));
            }
            //票要求验指纹,并且还未验过
            if (!session.Fingerprint_Pass && ticket.NeedFinger)
            {
                //如果系统中已有指纹,则直接校验。
                //否则,先进行采集(只支持单人,多人必须是卖票的时候同时录好)
                //提示设备要求验指纹
                return(TicketDataResult.VerifyFingerprintsResult(ticket, session, "请验证指纹", "请验证指纹"));
            }
            return(TicketDataResult.VerifyPassResult(ticket, session, "欢迎光临", "欢迎光临"));
        }
Пример #4
0
 /// <summary>
 /// 提交指纹比对结果
 /// </summary>
 /// <param name="obj"></param>
 /// <returns></returns>
 public Result <TicketResult> Ticket_SubmitFingerprints(SubmitFingerprints_Object obj)
 {
     _log.Info("进入【提交指纹比对结果】事件: Ticket_SubmitFingerprints");
     //_log.Info("得到数据: " + _otaFacadeService.ToJsonString(obj));
     try
     {
         obj.Session.Fingerprint_Pass = obj.Result;
         _log.Info("指纹验证状态:" + obj.Result);
         if (!obj.Result)
         {
             return(TicketDataResult.TaskTerminationResult("验证失败", "验证失败"));
         }
         return(TicketDataResult.VerifyPassResult(obj.Ticket, obj.Session, "验证成功"));
     }
     catch (Exception ex)
     {
         _log.Error(ex);
         return(TicketDataResult.FailResult("系统异常,请联系管理员!"));
     }
 }
Пример #5
0
 /// <summary>
 /// 出口模式下的过闸记录
 /// </summary>
 /// <param name="obj"></param>
 /// <returns></returns>
 public Result <TicketResult> Ticket_DoorChannelExportPassed(DoorChannelExport_Object obj)
 {
     _log.Info("进入【出口模式下的过闸记录】事件: Ticket_DoorChannelExportPassed");
     return(TicketDataResult.TaskTerminationResult());
 }
Пример #6
0
 /// <summary>
 /// 提交验证采集结果
 /// </summary>
 /// <param name="obj"></param>
 /// <returns></returns>
 public Result <TicketResult> Ticket_VerifyCollect(VerifyCollect_Object obj)
 {
     _log.Info("进入【提交验证采集结果】事件: Ticket_VerifyCollect");
     //_log.Info("得到数据: " + _otaFacadeService.ToJsonString(obj));
     return(TicketDataResult.TaskTerminationResult());
 }
Пример #7
0
 /// <summary>
 /// 提交人脸检测结果
 /// </summary>
 /// <param name="obj"></param>
 /// <returns></returns>
 public Result <TicketResult> Ticket_SubmitFaceDetect(FaceDetect obj)
 {
     _log.Info("进入【提交人脸检测结果】事件: Ticket_SubmitFaceDetect");
     return(TicketDataResult.TaskTerminationResult());
 }
Пример #8
0
 /// <summary>
 /// 设备上报落杆模式
 /// </summary>
 /// <param name="obj"></param>
 /// <returns></returns>
 public Result <TicketResult> Ticket_ShutdownChannel(ShutdownChannel_Object obj)
 {
     _log.Info("进入【设备上报落杆模式】事件: Ticket_ShutdownChannel");
     return(TicketDataResult.TaskTerminationResult());
 }