public static Result <TicketResult> Ticket_CheckTicket(CheckTicket_Object checkTicketObject) { var data = JsonSerializeHelper.ToJson(checkTicketObject); var result = HttpHelper.Post(url + "Ticket_CheckTicket", data, 60); return(JsonSerializeHelper.ToObject <Result <TicketResult> >(result)); }
/// <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("系统异常,请联系管理员!")); } }
/// <summary> /// 验证年卡 /// </summary> /// <param name="obj"></param> /// <returns></returns> public Result <TicketResult> ValidYearTicket(CheckTicket_Object obj) { _log.Info("开始验证年卡"); string msg; int yearTicketUserId; var isCheck = _yearTicketUserService.CheckYearTicketUser(obj.Number, out msg, out yearTicketUserId); _log.Info("年卡验证结果:" + msg); if (!isCheck) { //年卡无效 return(TicketDataResult.TaskTerminationResult(msg, 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 Temp_Fingerprint = new List <Fingerprint>() }; _log.Info("验证指纹状态:"); var list = _ticketFingerPrintService.GetFingers(yearTicketUserId); foreach (var item in list) { var finger = new Fingerprint { Data = item.FingerFeature, Token = item.FingerFeature }; ticketSession.Temp_Fingerprint.Add(finger); } _log.Info("指纹数量" + list.Count); DocomSDK.Ticket.Data.Ticket ticket = new DocomSDK.Ticket.Data.Ticket { BeginDate = DateTime.Now, //结束日期 ExpiryDate = DateTime.Now.AddDays(1), //开始日期 CapacitySize = 1, // 可用人数 NeedIDCard = false, //是否验证身份证 NeedFinger = true, UsageCount = 1, //已用人数 Number = obj.Number, //门票条码 Price = 0, //价格 TicketSource = obj.SensorSource, //门票来源 TicketType = SourceType.YearTicket.ToString(), //门票类型 UR_Text1 = yearTicketUserId.ToString(), //使用预留字段 }; _log.Info("发送指纹验证请求:" + OperationCode.VerifyFingerprints); return(TicketDataResult.VerifyFingerprintsResult(ticket, ticketSession, "验证指纹", "验证指纹")); }
/// <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(), //使用预留字段 }; 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)); }
/// <summary> /// 获取传感器的来源 /// </summary> /// <param name="obj"></param> /// <returns></returns> public SourceType GetSourceType(CheckTicket_Object obj) { //P10C1-91 if (obj.SensorSource.Length >= 8) { var sensorSub = obj.SensorSource.Substring(6, 2); if (sensorSub == "30") { //印刷纸质票,条形码为11位数字,编码规则 1位年份+2位价格+8位发票号 if (obj.Number.Length > 13) { _log.Info("扫描方式:二维码"); return(SourceType.QRcode); } else { _log.Info("扫描方式:条形码"); return(SourceType.BarCode); } } if (sensorSub == "80" || sensorSub == "20") { //验证通过即为身份证 if (IdCardValidation.CheckIdCard(obj.Number)) { _log.Info("扫描方式:二维码"); return(SourceType.IdCard); } //年卡 _log.Info("扫描方式:年卡"); return(SourceType.YearTicket); } if (sensorSub == "91") { _log.Info("扫描方式:二维码"); return(SourceType.PalmVein); } } else if (obj.SensorSource == "P10") { //验证通过即为身份证 if (IdCardValidation.CheckIdCard(obj.Number)) { _log.Info("扫描方式:二维码"); return(SourceType.IdCard); } //年卡 _log.Info("扫描方式:年卡"); return(SourceType.YearTicket); } _log.Info("扫描数据类型不正确:" + obj.SensorSource); return(SourceType.UnFound); }
/// <summary> /// 验证身份证 /// </summary> /// <param name="obj"></param> /// <returns></returns> public Result <TicketResult> ValidIdCard(CheckTicket_Object obj) { string msg; TicketTestingModel ticketTestingModel; var isCheck = _ticketTestingService.CheckTicketIdCard(obj.Number, out msg, out ticketTestingModel); if (!isCheck) { return(TicketDataResult.TaskTerminationResult(msg, msg)); } return(TicketResult(obj, SourceType.IdCard, ticketTestingModel, msg)); }
/// <summary> /// 验证掌静脉 /// </summary> /// <param name="obj"></param> /// <returns></returns> public Result <TicketResult> ValidPalmVein(CheckTicket_Object obj) { 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, DeviceID = obj.Device.DeviceName//可以用于设备id }; DocomSDK.Ticket.Data.Ticket ticket = new DocomSDK.Ticket.Data.Ticket() { BeginDate = DateTime.Now, //开始日期 ExpiryDate = DateTime.Now, //结束日期 CapacitySize = 1, //总人数 UsageCount = 1, // 已入园人数 NeedIDCard = false, //是否验证身份证 NeedFinger = false, Number = obj.Number, //门票条码 Price = 0, //价格 TicketSource = obj.SensorSource, //门票来源 TicketType = SourceType.PalmVein.ToString() //门票类型 }; if (obj.Device.DeviceName == "2f0fae9db03e9b73") { TestHelper.IsAction = false; //添加掌静脉特征 var isAdd = _venaService.CreateFeature(obj.Number); if (!isAdd) { return(TicketDataResult.TaskTerminationResult("采集失败", "采集失败")); } return(TicketDataResult.VerifyPassResult(ticket, ticketSession, "采集成功", "采集成功")); } TestHelper.IsAction = true; //比对掌静脉特征 var result = _venaService.SearchFeature(obj.Number); if (!result) { return(TicketDataResult.TaskTerminationResult("验证失败", "验证失败")); } return(TicketDataResult.VerifyPassResult(ticket, ticketSession, "验证成功,欢迎光临", "验证成功,欢迎光临")); }
/// <summary> /// 验证条形码 /// </summary> /// <param name="obj"></param> /// <returns></returns> public Result <TicketResult> ValidBarCode(CheckTicket_Object obj) { _log.Info("开始验证条形码"); string msg; TicketTestingModel ticketTestingModel; var isCheck = _ticketTestingService.CheckTicketBarCode(obj.Number, out msg, out ticketTestingModel); _log.Info("条形码验证结果:" + msg); if (!isCheck) { return(TicketDataResult.TaskTerminationResult(msg, msg)); } return(TicketResult(obj, SourceType.BarCode, ticketTestingModel, msg)); }
private void CheckTicket() { CheckTicket_Object obj = new CheckTicket_Object { SensorSource = "number30", Number = "2145215236", Device = new DeviceStatus { DeviceName = "dd3f2a00-5ecb-4a76-8388-8eba15c62471", Startup = DateTime.Now } }; var result = 闸机类.Post(obj, "Ticket_CheckTicket").Result; textBox2.Text = JsonHelper.ObjectToJson(result); }
/// <summary> /// 验证二维码 /// </summary> /// <param name="obj"></param> /// <returns></returns> public Result <TicketResult> ValidQRcode(CheckTicket_Object obj) { _log.Info("开始验证二维码"); var qrCode = _ticketTestingService.QrCodeDecrypt(obj.Number); if (string.IsNullOrEmpty(qrCode)) { _log.Info("解密二维码失败"); return(TicketDataResult.TaskTerminationResult(MessageKey.InvalidTicket, MessageKey.InvalidTicket)); } _log.Info("解密二维码成功"); string msg; TicketTestingModel ticketTestingModel; var isCheck = _ticketTestingService.CheckTicketQrCode(qrCode, out msg, out ticketTestingModel); _log.Info("二维码验证结果:" + msg); if (!isCheck) { return(TicketDataResult.TaskTerminationResult(msg, msg)); } return(TicketResult(obj, SourceType.QRcode, ticketTestingModel, msg)); }
/// <summary> /// 检票 /// </summary> /// <param name="obj"></param> /// <returns></returns> public Result <TicketResult> TicketValid(CheckTicket_Object obj) { return(ValidQRcode(obj)); //var sourceType = GetSourceType(obj); //switch (sourceType) //{ // //条形码 // case SourceType.BarCode: // return ValidBarCode(obj); // //二维码 // case SourceType.QRcode: // return ValidQRcode(obj); // //年卡 // case SourceType.YearTicket: // return ValidYearTicket(obj); // //身份证 // case SourceType.IdCard: // return ValidIdCard(obj); // //掌静脉 // case SourceType.PalmVein: // return ValidPalmVein(obj); //} //return TicketDataResult.FailResult("系统异常,请联系管理员!"); }
private void CheckTicket() { var number = SecurityExtension.DesEncrypt(textBox1.Text, DesKey.QrCodeKey); CheckTicket_Object obj = new CheckTicket_Object { SensorSource = "number30", Number = number, Device = new DeviceStatus { DeviceName = comboBox1.Text.Split(',')[0], Startup = DateTime.Now } }; var result = 闸机类.Ticket_CheckTicket(obj); textBox2.Text += "\r\n\r\n 开始验票。。。。。。。"; textBox2.Text += "\r\n\r\n 验票结果:" + result.Description; if (result.State == Result_Code.OK && result.Data.Code == OperationCode.VerifyPass) { textBox2.Text += "\r\n\r\n 正在提交过闸。。。。。。。。。。"; var result2 = 闸机类.Ticket_SubmitWalkPast(new SubmitWalkPast_Object { Session = result.Data.Session, Ticket = result.Data.TicketData, Count = 1, EventDate = DateTime.Now, Device = new DeviceStatus { DeviceName = result.Data.Session.DeviceID, Startup = DateTime.Now } }); if (result2.State == Result_Code.OK) { textBox2.Text += "\r\n\r\n 过闸结果:" + result2.Description; var count = 1; bool isTrue = result2.Data.Code == OperationCode.VerifyPass; while (isTrue) { count++; textBox2.Text += "\r\n\r\n 第" + count + "次,提交过闸。。。。。。。。。。"; var result3 = 闸机类.Ticket_SubmitWalkPast(new SubmitWalkPast_Object { Session = result2.Data.Session, Ticket = result2.Data.TicketData, Count = 1, EventDate = DateTime.Now, Device = new DeviceStatus { DeviceName = result2.Data.Session.DeviceID, Startup = DateTime.Now } }); if (result3.State == Result_Code.OK && result3.Data.Code == OperationCode.VerifyPass) { result2 = result3; } else { isTrue = false; } textBox2.Text += "\r\n\r\n 过闸结果:" + result3.Description; } } else { textBox2.Text += "\r\n\r\n 过闸结果:" + result2.Description; } } }