当前位置: 首页 > news >正文

车牌号黑名单校验功能实现说明

功能概述

在用户进行车辆预约时,系统会自动校验输入的车牌号是否在黑名单中。如果车牌号在黑名单中,系统将拒绝预约并返回相应的错误信息。

实现位置

文件路径: src/main/java/com/parkingmanage/controller/AppointmentController.java

核心功能

1. 黑名单校验流程

insertAppointment 方法中,添加了车牌号黑名单校验作为第一步验证:

// 🚫 第一步:车牌号黑名单校验
String plateNumber = appointment.getPlatenumber();
if (plateNumber != null && !plateNumber.trim().isEmpty()) {try {logger.info("🚫 开始车牌号黑名单校验: {}", plateNumber);boolean isBlacklisted = checkBlacklistStatus(plateNumber, appointment.getCommunity());if (isBlacklisted) {logger.warn("🚫 车牌号 {} 在黑名单中,拒绝预约", plateNumber);return R.failed("该车牌号已被列入黑名单,无法进行预约");}logger.info("✅ 车牌号 {} 黑名单校验通过", plateNumber);} catch (Exception e) {logger.error("🚫 黑名单校验异常: {}", e.getMessage(), e);return R.failed("黑名单校验失败,请稍后重试");}
}

2. 黑名单查询方法

实现了 checkBlacklistStatus 方法来调用外部黑名单查询接口:

private boolean checkBlacklistStatus(String plateNumber, String community) {try {// 根据社区名称获取停车场编码String parkCode = getParkCodeByCommunity(community);// 构建请求参数,参考月票查询的方式HashMap<String, Object> params = new HashMap<>();params.put("parkCodeList", Arrays.asList(parkCode));params.put("pageNum", 1);params.put("pageSize", 1000);params.put("carCode", plateNumber);// 调用黑名单查询接口JSONObject response = aikeConfig.downHandler(AIKEConfig.AK_URL, AIKEConfig.AK_KEY, AIKEConfig.AK_SECRET, "getParkBlackList", params);// 解析响应结果并判断是否在黑名单中// 检查 resultCode=0 和 status=1 表示成功// 从 data.recordList 中查找匹配的车牌号return false; // 不在黑名单中} catch (Exception e) {logger.error("🚫 黑名单校验异常: {}", e.getMessage(), e);return false; // 异常情况下允许预约}
}

3. 停车场编码映射

实现了 getParkCodeByCommunity 方法来根据社区名称获取对应的停车场编码:

private String getParkCodeByCommunity(String community) {if ("万象上东".equals(community)) {return "2KST9MNP";} else if ("四季上东".equals(community)) {return "2KUG6XLU";} else {return "2KUG6XLU"; // 默认使用四季上东的编码}
}

技术实现细节

1. 依赖注入

添加了必要的依赖注入:

@Resource
private AIKEConfig aikeConfig;

2. 导入声明

添加了必要的导入:

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.parkingmanage.common.config.AIKEConfig;

3. 接口调用

参考了现有的月票查询接口调用方式,使用 aikeConfig.downHandler 方法调用外部API。

错误处理

  1. 黑名单车牌: 返回 "该车牌号已被列入黑名单,无法进行预约"
  1. 接口异常: 返回 "黑名单校验失败,请稍后重试"
  1. 异常处理: 在异常情况下,为了不影响正常业务,选择允许预约但记录异常日志

日志记录

实现了详细的日志记录:

  • 🚫 开始黑名单校验
  • ✅ 黑名单校验通过
  • 🚫 发现黑名单车牌
  • 🚫 黑名单校验异常

测试建议

  1. 正常车牌: 测试不在黑名单中的车牌号,应该能正常预约
  1. 黑名单车牌: 测试在黑名单中的车牌号,应该被拒绝预约
  1. 空车牌号: 测试空车牌号或null值的处理
  1. 接口异常: 测试外部接口不可用时的处理

相关接口

  • 黑名单查询接口: BlackListController.getParkBlack
  • 外部API: getParkBlackList 命令
  • 停车场编码:
    • 万象上东: 2KST9MNP
    • 四季上东: 2KUG6XLU

响应数据结构

黑名单查询接口的响应结构如下:

{"data": {"total": 1,"recordList": [{"owner": "A1-b-0320","reason": "欠费","specialCarTypeConfigName": "您已欠费请及时缴费","specialCarTypeConfigId": 1526,"carCode": "黑AL1X07","remark1": "","blacklistForeverFlag": 1,"remark2": ""}],"count": 1,"currCount": 1},"resultCode": 0,"message": "业务成功","status": 1
}

响应字段说明

  • resultCode: 业务结果码,0表示成功
  • status: 状态码,1表示成功
  • message: 响应消息
  • data.recordList: 黑名单记录列表
  • data.recordList[].carCode: 车牌号
  • data.recordList[].reason: 加入黑名单的原因

注意事项

  1. 黑名单校验是预约流程的第一步,确保在其他验证之前执行
  1. 异常情况下选择允许预约,避免因接口问题影响正常业务
  1. 详细的日志记录便于问题排查和监控
  1. 参考了现有的月票查询实现,保持代码风格一致性
  1. 响应解析使用 resultCodestatus 字段判断成功状态
  1. 直接从 data.recordList 中获取黑名单记录,无需二级嵌套
http://www.dtcms.com/a/438763.html

相关文章:

  • 【第五章:计算机视觉-项目实战之生成对抗网络实战】2.基于SRGAN的图像超分辨率实战-(1)实战1:人脸表情生成实战任务详解
  • 【双指针专题】之快乐数
  • 锦州滨海新区城市建设规划网站建设局是个好单位吗
  • 域名搭建网站域名一般在哪里购买
  • 拦截器Interceptor
  • 运营网站流程ui设计的定义
  • 可以做自己的单机网站网站客户案例的
  • 网络编程中UDP协议的广播和组播通信
  • STM32G474单片机开发入门(一)STM32G474RET6单片机详解
  • W3C 简介
  • 菲律宾宿务Cebu(宿雾)介绍
  • Python中如何实现多级缓存
  • 深入掌握 FluentMigrator:C#.NET 数据库迁移框架详解
  • 快速做网站套餐光谷网站建设哪家好
  • 基本定时器(TIM6、TIM7)的基本介绍
  • 荆州网站建设兼职旅游网站功能简介
  • 有关做美食的网站android源码下载网站
  • Ubuntu中部署docker教程及使用指南(易用版)
  • c++之基础A(系统函数)(第一课)
  • 使用scrollview 时,自动滚动条和视图大于子view时居中显示
  • 如何最小阻力练习软件测试相关的英语口语
  • 专门做视频点评的网站iis 新建网站没有文件夹权限
  • 【完整源码+数据集+部署教程】 小麦病害分割系统: yolov8-seg-dyhead
  • Java 黑马程序员学习笔记(进阶篇16)
  • 自适应网站功能网站开发开发的前景
  • 整套网站设计网络服务费
  • python autocad comtypes+pyautocad二次开发 pywin32连不上高版本cad解决办法
  • Linux——0:安装与配置、命令、gcc
  • 健康管理实训室:创新教学场景,推动健康管理人才实战能力提升
  • 网站建设设计模板工业设计 做自己的网站 知乎