一种智能钥匙柜管理系统及其实现方法与流程

文档序号:20569819发布日期:2020-04-29 00:42阅读:1078来源:国知局
本发明涉及智能设备
技术领域
:,尤其是一种智能钥匙柜管理系统及其实现方法。
背景技术
::校园中为了保障教室、办公室、实验室等空间的安全并对其进行高效的管理,学校需要掌握这些教学与办公空间的人员出入与使用情况,而钥匙便成为了管理的媒介。目前,钥匙管理主要采用人工进行分发与验收检查,还有部分高校会使用计算机进行辅助管理,但其中人工干预的占比都比较高,易存在操作上的疏忽。伴随着日益提高的管理精细化、自动化要求以及人工智能技术的发展与智能化趋势,为了加强管理,方便操作,解放人工,需要将钥匙的分发与验收检查等工作进行电子化、自动化与智能化改造。目前主要有2种方法,一为门锁智能化,二为采用智能钥匙柜。对于门锁智能化的方法,需要将所有门锁改造成智能门锁,并专门给其配电配网。这种方法的改造成本较高,甚至需要重新装修布线,并会在一段时间内影响门的正常使用,对校园的日常运作会造成一定的影响。相比较而言,智能钥匙柜具备环境改造成本低,设备失效影响较低,维护检查快,设备易于监管等优点。因此,对于高校而言,采用智能钥匙柜是一种可行度更高的改造方法。目前,钥匙柜的研究面向的领域主要偏向于公安、军队、交通与发电供电领域,针对高校这个特殊环境进行研究较少。虽然已有的钥匙柜方案解决了钥匙的统一管理问题,实现了钥匙的登记、借用、归还、查询智能化。但其面向的使用人员与场景较为固定,身份设定与认证方式较为死板;在联网方面,要么无法联网,要么对网络环境要求较为严格。并未着重考虑师生的使用便捷的要求、不确定的网络部署环境与可能存在的临时性借用和代取代还情况。技术实现要素:有鉴于此,本发明实施例提供一种成本低且便捷实用的智能钥匙柜管理系统及其实现方法。本发明第一方面提供了一种智能钥匙柜管理系统,包括柜端、服务器端和应用端;所述柜端的硬件部分包括柜体、锁具、嵌入式主板、触摸显示屏、传感器组和钥匙环,所述柜端的软件部分包括linux系统;所述柜端,用于对钥匙取还进行管控,所述管控包括用户身份确认、用户权限确认、操作日志查询、钥匙位的开关控制以及钥匙正误检查;所述服务器端,用于为应用端提供服务与接口,同时也与所管理的钥匙柜进行通信;所述服务器端还用于提供网页服务、确认钥匙柜连接状态、确认钥匙柜身份信息、获取钥匙状态、获取日志信息、下发配置信息、给钥匙柜提供权限确认服务;所述应用端包括网页端和设备端,所述网页端为管理员和维护人员提供管理维护功能;所述设备端为用户提供操作功能。进一步,所述柜体包括外壳、内部支持与固定结构、锁具区、电子控制区、用户操作区;所述锁具区用于放置电磁锁、电磁锁保护罩以及钥匙;所述电子控制区用于存放用户不可接触的电子设备与线路,以实现数据传输、处理和控制锁具;所述用户操作区用于存放用户可以直接触摸的电子输入设备,以实现人机交互。进一步,所述柜端的硬件部分还包括应急机械锁位、电磁锁、网络继电器、变压器、触摸显示屏、rfid读卡器和路由器。进一步,所述柜端的硬件部分还包括应急电源、双目结构光摄像头、指纹模块、gprs模块、gps模块和无线网卡。本发明第二方面还提供了一种智能钥匙柜管理系统的实现方法,包括:通过柜端对钥匙取还进行管控,所述管控包括用户身份确认、用户权限确认、操作日志查询、钥匙位的开关控制以及钥匙正误检查;通过服务器端为应用端提供服务与接口,同时也与所管理的钥匙柜进行通信;通过所述服务器端提供网页服务、确认钥匙柜连接状态、确认钥匙柜身份信息、获取钥匙状态、获取日志信息、下发配置信息、给钥匙柜提供权限确认服务;以及通过应用端的网页端为管理员和维护人员提供管理维护功能;通过应用端的设备端为用户提供操作功能。进一步,还包括:对用户身份进行认证;在钥匙柜添加本地管理员账号;在钥匙柜重置本地管理员账号;在钥匙柜删除本地管理员账号;在钥匙柜添加本地普通用户账号;在钥匙柜修改本地普通用户账号;在钥匙柜删除本地普通用户账号;在钥匙柜修改本人本地账号信息;修改本人在线账号信息;在钥匙柜添加钥匙;在钥匙柜修改钥匙数据;在钥匙柜删除钥匙;以及同步钥匙柜端与服务器端钥匙数据。进一步,还包括:钥匙使用日志查询步骤;用户操作日志查询步骤;以及钥匙柜信息配置步骤。进一步,还包括通讯加密步骤;所述通讯加密步骤具体包括:采用内置的自签发的ssl证书作为服务器端与钥匙柜之间https与mqtt通讯证书;所有服务器端与钥匙柜之间mqtt和https通讯均只信任所述自签发证书,并均经过通讯协议的加密;以及应用端与服务器端的接口之间的通讯采用aes加密算法的cbc模式与pkcs5padding填充模式进行加密。进一步,还包括:在应用端修改钥匙柜本地账号信息;在应用端禁用钥匙柜本地账号;以及服务器端的远程指令下达。进一步,还包括:在应用端添加在线管理员账号;在应用端重置在线管理员账号;在应用端删除在线管理员账号;在应用端添加单个在线普通用户账号;在应用端批量添加在线普通用户账号;在应用端自行注册在线普通用户账号;在应用端修改在线普通用户账号;以及在应用端删除在线普通用户账号。上述本发明实施例中的一个或多个技术方案具有如下优点:本发明包括柜端、服务器端和应用端;通过柜端对钥匙取还进行管控,所述管控包括用户身份确认、用户权限确认、操作日志查询、钥匙位的开关控制以及钥匙正误检查;通过服务器端为应用端提供服务与接口,同时也与所管理的钥匙柜进行通信;通过所述服务器端提供网页服务、确认钥匙柜连接状态、确认钥匙柜身份信息、获取钥匙状态、获取日志信息、下发配置信息、给钥匙柜提供权限确认服务;以及通过应用端的网页端为管理员和维护人员提供管理维护功能;通过应用端的设备端为用户提供操作功能;本发明降低了设备改造成本,便于师生使用。附图说明为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本申请实施例的系统结构示意图;图2为本申请实施例的柜体结构示意图。具体实施方式下面结合说明书附图和具体实施例对本发明作进一步解释和说明。对于本发明实施例中的步骤编号,其仅为了便于阐述说明而设置,对步骤之间的顺序不做任何限定,实施例中的各步骤的执行顺序均可根据本领域技术人员的理解来进行适应性调整。参照图1,本发明第一方面提供了一种智能钥匙柜管理系统,包括柜端、服务器端和应用端;所述柜端的硬件部分包括柜体、锁具、嵌入式主板、触摸显示屏、传感器组和钥匙环,所述柜端的软件部分包括linux系统;所述柜端,用于对钥匙取还进行管控,所述管控包括用户身份确认、用户权限确认、操作日志查询、钥匙位的开关控制以及钥匙正误检查;所述服务器端,用于为应用端提供服务与接口,同时也与所管理的钥匙柜进行通信;所述服务器端还用于提供网页服务、确认钥匙柜连接状态、确认钥匙柜身份信息、获取钥匙状态、获取日志信息、下发配置信息、给钥匙柜提供权限确认服务;所述应用端包括网页端和设备端,所述网页端为管理员和维护人员提供管理维护功能;所述设备端为用户提供操作功能。具体的,本实施例的柜端负责实现钥匙的取还管理,包括检查用户身份、检查用户权限、记录与查询相关日志、开关特定钥匙位与检查钥匙正误等功能。其硬件部分包括柜体、锁具、嵌入式主板、触摸显示屏、相关传感器、钥匙环等;软件部分主要包括linux系统与钥匙柜应用。其设计上可以脱离服务器端与应用端独立运行,但会造成部分功能被禁用。本实施例的服务器端负责为应用端提供服务与接口,同时也与所管理的钥匙柜进行通信。服务器端会为所有人员提供网页服务,也为面向普通用户与管理员用户的app应用提供远程api接口。服务器与钥匙柜的主要通讯职能包括:确认钥匙柜连接状态、确认钥匙柜身份信息、获取钥匙状态、获取日志信息、下发配置信息、给钥匙柜提供权限确认服务等。本实施例的应用端负责与用户进行交互,引导与协助用户完成相关操作。包括网页端与app应用两个部分,其中网页端主要面向管理员与维护人员,主要为了方便在任意一台电脑上进行管理与维护而设计;而app应用主要面向普通用户,为了方便在随时随地在手机上使用而设计。具体的,如图2所示,钥匙柜结构分5大部分,分别为外壳、内部支持与固定结构、锁具区、电子控制区、用户操作区。其中,外壳、内部支持与固定结构以塑料、钢化玻璃、金属为主要构成。锁具区主要指放置电磁锁及其保护罩的区域,用于放置钥匙。电子控制区包括所有用户无法直接接触电子设备与线路等,用于数据传输、处理和控制锁具。用户操作区主要指用户可以直接触摸的电子输入设备,用于人机交互,如触摸屏、指纹模块等,另外,如图2所示的柜体上还设有读卡器和摄像头,功能丰富。为了保证在断电、设备故障等情况进行操作,钥匙柜将会设置一个机械锁位,该区域称为备用机械锁钥匙区域。该机械锁钥匙由专员管理,该锁位放置包括所有备用钥匙的钥匙环。为了保证该机械锁位的应急性,避免破坏日常管理,该锁位开启后,会尝试向嵌入式主板发送紧急信号,并于2秒后物理联动切断钥匙柜内部电子设备电源,直到维护人员到场进行检修。在控制失效情况下,钥匙交由开启机械锁位的人员进行管理。钥匙柜使用的硬件可分为必备与选配两种。其中必备主要包括:钥匙柜外壳与内部支持结构、应急机械锁位、电磁锁、网络继电器、变压器、触摸显示屏、嵌入式主板、rfid读卡器、路由器等,选配硬件包括:应急电源、双目结构光摄像头、指纹模块、gprs模块、gps模块、无线网卡等。必备硬件为实现钥匙柜基本功能所需,不可缺少,而选配硬件可根据实际使用需求进行添加。钥匙柜的软件设计包括以下方面:(1)linux系统的部署钥匙柜的软件系统运行在linux系统之上,通过修改rc.local脚本实现自启动。系统启动时会自启动2个进程,分别为程序重启进程与系统重启进程。程序重启进程负责以1秒钟为间隔检测钥匙柜控制软件进程是否存在,如果不存在则自动启动,实现开机后第一次启动钥匙柜控制软件与保证程序崩溃后仍能自动重启。系统重启进程则负责检测程序重启进程是否仍在运行与系统资源占用是否持续过高,该进程启动后先休眠3分钟,然后以1分钟为间隔进行检测,如果检测到程序重启进程未运行或系统cpu、内存占用持续5分钟在95%以上,则重启系统。(2)数据库设计数据库包含5个表:用户表、钥匙表、用户的钥匙权限表、日志表、配置表。其中用户(user)表包括用户名(username)、处理后的密码(userpasswordenc)、处理后的安全密码(secpasswordenc)、用户级别(userlevel)、账号创建时间(creationdate)、绑定的服务器端用户id(remoteuserid)、绑定的身份卡id(cardid)、指纹id(fingerprintid)、指纹信息(fingerprintvalue)、人脸id(faceid)、最大同时借用钥匙数(maxgetkey)、当前借用钥匙数(currgetkey)、账号信息最近更新时间(lastmodifiedtime)、是否启用(enable)、账号说明(desc)、头像地址(avatarurl)、手机号(phone)、邮箱(email)。钥匙(key)表包括钥匙id(keyid)、钥匙名(keyname)、钥匙信息最近更新时间(lastmodifiedtime)、是否启用(enable)、钥匙说明(desc)、借用状态(isout)、最近借用用户(lastuseuser)、钥匙的rfid编号(keyrfid)。用户的钥匙权限(userkeypair)表包括用户(userid)、钥匙(keyid)、授权时间(creationdate)。日志(log)表包括操作用户(aboutuser)、相关钥匙(aboutkey)、时间(date)、操作类型(logaction)、操作说明(logdesc)、是否启用(enable)。配置(option)表包括配置项类别(type)、配置项名称(name)、配置项值(value)、修改时间(lastmodifiedtime)。(3)开发技术钥匙柜软件基于qt框架开发,采用qml做界面开发、c++做底层实现,保证了界面实现的简便性与底层系统的稳定性与高性能。软件使用egl接口进行全屏的渲染输出,避免了桌面环境对软件的影响,也减少了软件的被攻击面。软件使用sqlite作为数据库,并采用dquest作为orm框架,并对其进行修改以适应程序分页需求。对于硬件控制方面。软件通过modbus协议与tcp/ip网络通信实现网络继电器控制,再通过网络继电器控制电磁锁的开关。软件还通过libnfc库与串口通讯实现对rfid读卡器进行操作,读取ic/id卡的卡号信息。关于指纹与人脸活体检测则通过厂家与相关技术商提供的sdk实现。关于与服务器端的通讯。网络的连接、维持与切换由linux系统支持,软件通过执行系统命令与修改系统文件实现相关配置。网络连通后,软件将通过http与mqtt协议进行数据传输,并使用tls加密。软件将会自动订阅对应钥匙柜id的消息,所有服务器下达的指令均由此订阅传输。对于软件需要上传的数据,采用http的post方法进行传输。本发明第二方面还提供了一种智能钥匙柜管理系统的实现方法,包括:通过柜端对钥匙取还进行管控,所述管控包括用户身份确认、用户权限确认、操作日志查询、钥匙位的开关控制以及钥匙正误检查;通过服务器端为应用端提供服务与接口,同时也与所管理的钥匙柜进行通信;通过所述服务器端提供网页服务、确认钥匙柜连接状态、确认钥匙柜身份信息、获取钥匙状态、获取日志信息、下发配置信息、给钥匙柜提供权限确认服务;以及通过应用端的网页端为管理员和维护人员提供管理维护功能;通过应用端的设备端为用户提供操作功能。本申请实施例的用户身份设计如下:(1)维护员:用于设备部署与维护,可以配置钥匙柜系统(包括运行模式、服务端地址、服务端连接方式等)、初始化或重置数据、备份与恢复数据、添加管理员、删除管理员、重置管理员信息。(2)管理员:用于管理钥匙与用户,可以添加、删除、修改、查询所有普通用户与钥匙的信息(包括钥匙的名称、说明、锁位、当前状态与用户的身份信息、权限、密码等),可以查询所有使用日志,还可以修改自己的个人信息与添加其他管理员。同时,为了安全考虑,不设分级管理员,以此保证所有长期的权限授权均经过最终的权限管理员的确认与操作,避免过多的子管理员容易造成的授权不当与管理混乱的问题。除此之外,为了保证系统安全,建议严格控制管理员账号数量,并采用多因素身份认证。(3)普通用户:用于日常取还钥匙,可以查看有权限取还的钥匙的信息(如果钥匙已被借可以提供借用人的联系信息),也可以修改自己的部分身份认证信息与联系方式。(4)临时用户:用于临时性借还的用户,权限与信息依附于普通用户,为某一普通用户将自己的部分权限授予临时用户,在特定操作次数与时间后失效,在日志信息中记录为授权的普通用户操作(但会标注“临时”加以说明)。主要通过临时授权码完成特定操作。本申请实施例的身份认证方式设计如下:身份认证方式由管理员进行配置,可配置全局默认认证方式,亦可对钥匙柜进行单独配置。管理员需要配置的内容为支持的认证方式的组合的列表,例如:“账号密码认证”、“人脸认证+手机验证码认证”。配置过后,用户必须完成认证方式列表中要求的任意一个认证方式组合方可进入系统。此种身份认证方式的配置设计,保证了身份认证方式的多样性与灵活性,可以由管理员根据安全性与便捷性的需要进行调整。系统支持的认证方式有以下7种,其中部分认证方式对钥匙柜的硬件有要求,但该硬件为选配项,如果钥匙柜中不存在所需硬件,则自动禁用包含该认证方式的组合。(1)密码:传统的账号密码,由数字、字母、英文状态下的特殊字符构成(2)短信验证码:验证身份时,向用户绑定的手机号发送一次性短信验证码,由4-8位数字构成。该验证手段仅钥匙柜联网时可用。(3)指纹:验证身份时,用户按入指纹,与用户预存指纹进行比对来验证身份。仅装载指纹识别模块并在钥匙柜录入相关信息时可用。(4)ic/id卡:通过读取ic/id卡的卡号完成身份认证。此认证方式不建议单独使用,可作为账号号码输入。(5)人脸:通过双目结构光摄像头,获取人脸图片并进行活体检测,将人脸信息与预存信息进行识别匹配,完成身份认证。该验证手段仅装有摄像头并在钥匙柜录入相关信息时可用。(6)二次(安全)密码:用于对特定钥匙柜操作或特定操作的二次安全密码,增加敏感操作的安全性。(7)临时授权码:由普通用户生成,用于完成特定操作的临时性授权码。本申请实施例的网络连接与运行模式设计如下:(1)离线模式:在该模式下,钥匙柜以单机的方式运行,无需配置网络连接。该模式没有应用端与服务器端,无需服务器端的部署配置,只需在初次启动钥匙柜后选择离线模式并配置管理员账号即可。随后由管理员对钥匙与用户的信息进行添加与管理,即可投入使用。在该模式下,由于无法联网,所以无法使用短信验证码与临时授权码进行身份认证,同时也不支持临时用户。(2)内网连接模式:在该模式下,钥匙柜与服务器端会被禁止访问外网,避免信息的主动泄露。服务器端应该具有内网ip,所有钥匙柜均可直接访问,钥匙柜可用采用rj45网口进行网线连接与wifi连接(不建议)。在网络配置过程中注意服务器端的内网ip所处网段不可与钥匙柜内部网络的网段相同,如相同需要择一进行修改。用户需要配置服务器端与钥匙柜后方可投入使用,应用端仅在内网连接时可用。在该模式下,由于无法连接外网,所以无法使用短信验证码进行身份认证。(3)公网连接模式:在该模式下,服务器端应该具备外网ip,且所有钥匙柜均可访问,钥匙柜采用rj45网口网线连接与wifi连接(不建议),并可选配gprs流量卡作为备用连接。用户需要配置服务器端与钥匙柜后方可投入使用,如不考虑硬件限制,所有功能在此模式下均可启用。本申请实施例的智能钥匙柜管理系统的功能包括以下:1.身份认证1.1认证需要的信息的获取部分认证信息的获取对钥匙柜的硬件有要求,但该硬件为选配项,如果钥匙柜中不存在所需硬件,则自动禁用包含该认证方式的组合。标明为“仅钥匙柜”仅能在钥匙柜进行信息输入。(1)账号名表名用户身份的唯一标识,由某些字符构成,可以是用户编号、用户名、绑定的手机号、邮箱地址等。部分由系统生成,用户也可自行设定部分信息,用户在钥匙柜、pc、移动设备上使用键盘(含虚拟键盘)进行输入。(2)密码传统的账号密码,由某些字符构成。由管理员添加用户时或用户自行设置密码时设定,用户在钥匙柜、pc、移动设备上使用键盘(含虚拟键盘)进行输入。(3)短信验证码(仅公网连接模式)验证身份时,钥匙柜或服务器端生成一次性验证码并向用户绑定的手机号发送包含一次性验证码的短信,用户在钥匙柜、pc、移动设备上使用键盘(含虚拟键盘)进行输入一次性验证码。(4)邮箱验证码(仅公网连接模式)验证身份时,服务器端生成一次性验证码并向用户绑定的邮箱发送包含一次性验证码的邮件,用户在钥匙柜、pc、移动设备上使用键盘(含虚拟键盘)进行输入一次性验证码。(5)指纹(仅钥匙柜、选配硬件要求)通过第三方提供的指纹识别模块读取用户指纹。(6)ic/id卡(仅钥匙柜)通过串口通信控制读卡器读取ic/id卡的卡号。(7)人脸(仅钥匙柜、选配硬件要求)通过双目结构光摄像头与相关技术接口,获取人脸图片并进行活体检测。(8)二次(安全)密码用于对特定钥匙柜操作或特定操作的二次安全密码,增加敏感操作的安全性。由用户自行设定,用户在钥匙柜、pc、移动设备上使用键盘(含虚拟键盘)进行输入。(9)临时授权码(仅钥匙柜、需公网或内网连接模式)由普通用户生成,在指定用户操作权限与有效次数与时间后,服务器端生成用于完成特定操作的临时性授权码并与应用端进行显示。用户在钥匙柜上使用键盘(含虚拟键盘)进行输入。1.2进行认证用户在界面选择验证方式,包括选择本地身份或联网身份、认证方式等,设备根据要求获取认证需要的信息,根据选择与本地数据库存储的信息进行匹配或通过服务器api对服务器数据库进行数据匹配。2.在钥匙柜添加本地管理员账号(1)用户通过系统维护员身份认证进入系统。(2)系统显示操作界面,用户点击添加钥匙柜本地管理员账号相关的按钮,进入添加钥匙柜本地管理员账号界面。(3)用户根据界面指引填写与添加本地管理员账号信息,包括用户名、密码、电话、ic/id卡号等等。系统通过“1.1认证需要的信息的获取”所述方式读取、验证相关信息。如果填写手机号,通过短信验证码验证手机号有效性。(4)通过相应sql语句,在数据库中查询是否存在冲突数据,如相同的用户名、相同的手机号、相同的卡号等等。(5)如果冲突,系统显示相关错误提示。如不冲突,系统通过相应sql语句将数据插入数据库进行存储,并显示成功提示。3.在钥匙柜重置本地管理员账号(1)用户通过系统维护员身份认证进入系统。(2)系统显示操作界面,用户点击钥匙柜本地管理员账号管理相关的按钮,进入钥匙柜本地管理员账号管理界面。(3)用户在管理界面检索查询并选定需要操作的用户,并点击重置按钮进行对应操作。(4)用户根据界面指引填写新的本地管理员账号信息,包括密码、电话、ic/id卡号等身份信息。系统通过“1.1认证需要的信息的获取”所述方式读取、验证相关信息。如果填写手机号,通过短信验证码验证手机号有效性。(5)通过相应sql语句,在数据库中查询是否存在冲突数据,如相同的手机号、相同的卡号等等。(6)如果冲突,系统显示相关错误提示。如不冲突,系统通过相应sql语句更新数据库记录,并显示成功提示。4.在钥匙柜删除本地管理员账号(1)用户通过系统维护员身份认证进入系统。(2)系统显示操作界面,用户点击钥匙柜本地管理员账号管理相关的按钮,进入钥匙柜本地管理员账号管理界面。(3)用户在管理界面检索查询并选定需要操作的用户,并点击删除按钮。(4)通过相应sql语句,将对应用户账号信息记录从数据库中删除。(5)如果出错,系统显示相关错误提示。如不出错,则显示成功提示。5.在钥匙柜添加本地普通用户账号(1)用户通过管理员身份认证进入系统。(2)系统显示操作界面,用户点击添加钥匙柜本地普通用户账号相关的按钮,进入添加钥匙柜本地普通用户账号界面。(3)用户根据界面指引填写与添加本地普通用户账号信息,包括用户名、密码、电话、ic/id卡号等等。系统通过“1.1认证需要的信息的获取”所述方式读取、验证相关信息。如果填写手机号,通过短信验证码验证手机号有效性。(4)通过相应sql语句,在数据库中查询是否存在冲突数据,如相同的用户名、相同的手机号、相同的卡号等等。(5)如果冲突,系统显示相关错误提示。如不冲突,系统通过相应sql语句将数据插入数据库进行存储,并显示成功提示。6.在钥匙柜修改本地普通用户账号(1)用户通过管理员身份认证进入系统。(2)系统显示操作界面,用户点击钥匙柜本地普通用户账号管理相关的按钮,进入钥匙柜本地普通用户账号管理界面。(3)用户在管理界面检索查询并选定需要操作的用户,并点击修改按钮进行对应操作。(4)用户根据界面指引填写需要修改的新的本地普通用户账号信息。系统通过“1.1认证需要的信息的获取”所述方式读取、验证相关信息。如果填写手机号,通过短信验证码验证手机号有效性。(5)通过相应sql语句,在数据库中查询是否存在冲突数据,如相同的手机号、相同的卡号等等。(6)如果冲突,系统显示相关错误提示。如不冲突,系统通过相应sql语句更新数据库记录,并显示成功提示。7.在钥匙柜删除本地普通用户账号(1)用户通过管理员身份认证进入系统。(2)系统显示操作界面,用户点击钥匙柜本地普通用户账号管理相关的按钮,进入钥匙柜本地普通用户账号管理界面。(3)用户在管理界面检索查询并选定需要操作的用户,并点击删除按钮。(4)通过相应sql语句,将对应用户账号信息记录从数据库中删除。(5)如果出错,系统显示相关错误提示。如不出错,则显示成功提示。8.在应用端添加在线管理员账号(1)用户通过系统维护员身份认证进入系统。(2)系统显示操作界面,用户点击添加在线管理员账号相关的按钮,进入添加在线管理员账号界面。(3)用户根据界面指引填写与添加在线管理员账号信息,包括用户名、密码、电话、ic/id卡号等等。系统通过“1.1认证需要的信息的获取”所述方式读取、验证相关信息。如果填写手机号,通过短信验证码验证手机号有效性。如果填写邮箱,通过邮箱验证码验证邮箱有效性。(4)应用端通过http请求调用服务器端api,服务器端根据请求内容生成并执行相应sql语句,在数据库中查询是否存在冲突数据,如相同的用户名、相同的手机号、相同的卡号等等。(5)如果冲突,服务器端返回错误信息,应用端系统显示相关错误提示。如不冲突,服务器系统通过相应sql语句将数据插入数据库进行存储,并返回成功信息,应用端显示成功提示。9.在应用端重置在线管理员账号(1)用户通过系统维护员身份认证进入系统。(2)系统显示操作界面,用户点击在线管理员账号管理相关的按钮,进入在线管理员账号管理界面。(3)用户在管理界面检索查询并选定需要操作的用户,并点击重置按钮进行对应操作。(4)用户根据界面指引填写新的在线管理员账号信息,包括密码、电话、ic/id卡号等身份信息。系统通过“1.1认证需要的信息的获取”所述方式读取、验证相关信息。如果填写手机号,通过短信验证码验证手机号有效性。如果填写邮箱,通过邮箱验证码验证邮箱有效性。(5)应用端通过http请求调用服务器端api,服务器端根据请求内容生成并执行相应sql语句,在数据库中查询是否存在冲突数据,如相同的手机号、相同的卡号等等。(6)如果冲突,服务器端返回错误信息,应用端系统显示相关错误提示。如不冲突,服务器系统通过相应sql语句更新数据库记录,并返回成功信息,应用端显示成功提示。10.在应用端删除在线管理员账号(1)用户通过系统维护员身份认证进入系统。(2)系统显示操作界面,用户点击在线管理员账号管理相关的按钮,进入在线管理员账号管理界面。(3)用户在管理界面检索查询并选定需要操作的用户,并点击删除按钮。(4)应用端通过http请求调用服务器端api,服务器端根据请求内容生成并执行相应sql语句,将对应用户账号信息记录从数据库中删除。(5)如果出错,服务器端返回错误信息,应用端系统显示相关错误提示。如不出错,则返回成功信息,应用端显示成功提示。11.在应用端添加单个在线普通用户账号(1)用户通过管理员身份认证进入系统。(2)系统显示操作界面,用户点击添加在线普通用户账号相关的按钮,进入添加在线普通用户账号界面。(3)用户根据界面指引填写与添加在线普通用户账号信息,包括用户名、密码、电话、ic/id卡号等等。系统通过“1.1认证需要的信息的获取”所述方式读取、验证相关信息。如果填写手机号,通过短信验证码验证手机号有效性。如果填写邮箱,通过邮箱验证码验证邮箱有效性。(4)应用端通过http请求调用服务器端api,服务器端根据请求内容生成并执行相应sql语句,在数据库中查询是否存在冲突数据,如相同的用户名、相同的手机号、相同的卡号等等。(5)如果冲突,服务器端返回错误信息,应用端系统显示相关错误提示。如不冲突,服务器系统通过相应sql语句将数据插入数据库进行存储,并返回成功信息,应用端显示成功提示。12.在应用端批量添加在线普通用户账号(1)用户通过管理员身份认证进入系统。(2)系统显示操作界面,用户点击批量添加在线普通用户账号相关的按钮,进入批量添加在线普通用户账号界面。(3)用户根据界面提示,填写、生成需要批量添加在线普通用户账号信息,并按csv或json等可处理格式进行储存。(注意,在此不对手机号与邮箱的有效性进行验证)(4)点击上传信息存储文件。应用端将数据文件通过http的post请求上传到服务器端。(5)服务器端对数据格式的有效性进行检查,并执行相应sql语句,在数据库中查询是否存在冲突数据,如相同的用户名、相同的手机号、相同的卡号等等。(6)如果无效或冲突,服务器端返回错误信息,应用端系统显示相关错误提示。如不冲突,服务器系统通过相应sql语句将数据插入数据库进行存储,并返回成功信息,应用端显示成功提示。13.在应用端自行注册在线普通用户账号(该功能由管理员自行选择是否开启)(1)用户点击添加在线普通用户账号相关的按钮,进入添加在线普通用户账号界面。(2)用户根据界面指引填写与添加在线普通用户账号信息,包括用户名、密码、电话、ic/id卡号等等。系统通过“1.1认证需要的信息的获取”所述方式读取、验证相关信息。如果填写手机号,通过短信验证码验证手机号有效性。如果填写邮箱,通过邮箱验证码验证邮箱有效性。(3)应用端通过http请求调用服务器端api,服务器端根据请求内容生成并执行相应sql语句,在数据库中查询是否存在冲突数据,如相同的用户名、相同的手机号、相同的卡号等等。(4)如果冲突,服务器端返回错误信息,应用端系统显示相关错误提示。如不冲突,服务器系统通过相应sql语句将数据插入数据库进行存储,并返回成功信息,应用端显示成功提示。14.在应用端修改在线普通用户账号(1)用户通过管理员身份认证进入系统。(2)系统显示操作界面,用户点击在线普通用户账号管理相关的按钮,进入在线普通用户账号管理界面。(3)用户在管理界面检索查询并选定需要操作的用户,并点击修改按钮进行对应操作。(4)用户根据界面指引填写需要修改的新的在线普通用户账号信息。系统通过“1.1认证需要的信息的获取”所述方式读取、验证相关信息。如果填写手机号,通过短信验证码验证手机号有效性。如果填写邮箱,通过邮箱验证码验证邮箱有效性。(5)应用端通过http请求调用服务器端api,服务器端根据请求内容生成并执行相应sql语句,在数据库中查询是否存在冲突数据,如相同的手机号、相同的卡号等等。(6)如果冲突,服务器端返回错误信息,应用端系统显示相关错误提示。如不冲突,服务器系统通过相应sql语句更新数据库记录,并返回成功信息,应用端显示成功提示。15.在应用端删除在线普通用户账号(1)用户通过管理员身份认证进入系统。(2)系统显示操作界面,用户点击在线普通用户账号管理相关的按钮,进入在线普通用户账号管理界面。(3)用户在管理界面检索查询并选定需要操作的用户,并点击删除按钮。(4)应用端通过http请求调用服务器端api,服务器端根据请求内容生成并执行相应sql语句,将对应用户账号信息记录从数据库中删除。(5)如果出错,服务器端返回错误信息,应用端系统显示相关错误提示。如不出错,则返回成功信息,应用端显示成功提示。16.在钥匙柜修改本人本地账号信息(1)用户通过身份认证进入系统。(2)系统显示操作界面,用户点击个人信息相关的按钮,进入个人信息界面,并再次点击维护个人信息。(3)用户根据界面指引填写需要修改的新的个人信息。系统通过“1.1认证需要的信息的获取”所述方式读取、验证相关信息。如果填写手机号,通过短信验证码验证手机号有效性。(普通用户允许更改的本人信息由管理员设定,普通用户无法修改权限信息)(4)通过相应sql语句,在数据库中查询是否存在冲突数据,如相同的手机号、相同的卡号等等。(5)如果冲突,系统显示相关错误提示。如不冲突,系统通过相应sql语句更新数据库记录,并显示成功提示。17.修改本人在线账号信息(1)用户通过身份认证进入系统。(2)系统显示操作界面,用户点击个人信息相关的按钮,进入个人信息界面,并再次点击维护个人信息。(3)用户根据界面指引填写需要修改的新的个人信息。系统通过“1.1认证需要的信息的获取”所述方式读取、验证相关信息。如果填写手机号,通过短信验证码验证手机号有效性。如果填写邮箱,通过邮箱验证码验证邮箱有效性。(普通用户允许更改的本人信息由管理员设定,普通用户无法修改权限信息)(5)应用端/钥匙柜通过http请求调用服务器端api,服务器端根据请求内容生成并执行相应sql语句,在数据库中查询是否存在冲突数据,如相同的手机号、相同的卡号等等。(6)如果冲突,服务器端返回错误信息,应用端/钥匙柜系统显示相关错误提示。如不冲突,服务器系统通过相应sql语句更新数据库记录,并返回成功信息,应用端/钥匙柜显示成功提示。18.在钥匙柜添加钥匙(1)用户通过管理员身份认证进入系统。(2)系统显示操作界面,用户点钥匙管理相关的按钮,进入添加钥匙管理界面,再点击钥匙添加按钮进入钥匙添加界面。(3)用户根据界面指引填写钥匙信息,包括钥匙悬挂位、钥匙编号、钥匙名称、钥匙说明等等。(4)用户点击添加按钮,进入钥匙识别模式。用户将钥匙别进带rfid芯片的钥匙环,将带钥匙环的钥匙贴近读卡器。系统通过读卡器读取钥匙环的rfid的编号,并记录。(5)通过相应sql语句,在数据库中查询是否存在冲突数据,如相同的钥匙悬挂位、相同的钥匙编号、相同的rfid编号等等。(6)如果冲突,系统显示相关错误提示。如不冲突,系统将解锁对应钥匙位,让用户放置。(7)在用户确认完成放置后,系统锁定钥匙位,并通过相应sql语句将钥匙数据插入数据库进行存储,并显示成功提示。19.在钥匙柜修改钥匙数据(1)用户通过管理员身份认证进入系统。(2)系统显示操作界面,用户点钥匙管理相关的按钮,进入添加钥匙管理界面。(3)用户在管理界面检索查询并选定需要操作的钥匙,并点击修改按钮进行对应操作。(4)用户根据界面指引填写需要修改的新的本地普通用户账号信息。如需更换钥匙环则点击更新钥匙环编号按钮,进入钥匙识别模式,用户将带新钥匙环的钥匙贴近读卡器,系统通过读卡器读取钥匙环的rfid的编号,并记录。结束修改后,用户点击保存按钮。(5)通过相应sql语句,在数据库中查询是否存在冲突数据,如相同的钥匙编号、相同的rfid编号等等。(6)如果冲突,系统显示相关错误提示。如不冲突,系统通过相应sql语句更新数据库记录,并显示成功提示。20.在钥匙柜删除钥匙(1)用户通过管理员身份认证进入系统。(2)系统显示操作界面,用户点钥匙管理相关的按钮,进入添加钥匙管理界面。(3)用户在管理界面检索查询并选定需要操作的钥匙,并点击删除按钮进行对应操作。(4)系统解锁对应钥匙位。(5)进入钥匙识别模式以供二次确认。用户将钥匙别进带rfid芯片的钥匙环,将带钥匙环的钥匙贴近读卡器。系统通过读卡器读取钥匙环的rfid的编号,并比对是否为待删除钥匙对应的编号。如不是,则提示用户重新识别。(可选)(6)点击确认删除按钮后,通过相应sql语句,将对应钥匙记录从数据库中删除。(7)如果出错,系统显示相关错误提示。如不出错,则显示成功提示。21.同步钥匙柜端与服务器端钥匙数据(1)用户手动点击同步按钮,或者数据更改自动同步钥匙数据,或者服务器端下发同步指令。(2)钥匙柜端系统通过sql语句查询保存在数据库配置表里面的上次同步时间戳记录,如果不存在或需要全同步则设置为0。(3)钥匙柜通过相应sql语句查询数据库中钥匙信息最近更新时间(lastmodifiedtime)大于上次同步时间戳的钥匙表的记录。(4)钥匙柜将查询得到的需要上传的记录(即为步骤3查询得的记录)转换成json格式封装。(5)钥匙柜通过http的post方法请求同步接口把json数据上传提交给服务器端。(6)服务器端接收数据后解析并效验数据格式,并通过sql语句查询服务器数据库中每个提交的待同步记录的钥匙编号对应的钥匙信息最近更新时间(lastmodifiedtime),过滤出比服务器数据库保存的数据要新的记录(钥匙柜端该钥匙信息最近更新时间>服务器端该钥匙信息最近更新时间)。(7)如果(6)出错则服务器不进行任何处理,并返回错误信息,并转(12)。(8)如果(6)一切正常,则将新的记录生成对应sql语句(包括将记录更新来源设置为钥匙柜),提交到服务器数据库。(9)服务器端根据请求的“上次同步时间戳记录”,通过相应sql语句查询数据库中钥匙信息最近更新时间(lastmodifiedtime)大于上次同步时间戳且记录更新来源为应用端的钥匙表的记录。(10)服务器端将查询得到的需要下发的记录(即为步骤9查询得的记录)转换成json格式封装。(11)服务器端对钥匙柜的请求返回成功信息与需要更新的钥匙记录的json数据。(12)钥匙柜如接收到错误提示则数秒后重试整个同步过程。如果成功,则解析并效验返回数据,将新数据转化成对应sql语句对数据库的记录进行更新,并更新数据库配置表里面的上次同步时间戳记录为请求发送时间。22.借用钥匙(1)用户通过普通用户或临时用户身份认证进入系统,系统显示当前钥匙柜中该用户有权借用的所有钥匙。(2)选择点击需要钥匙。系统通过sql语句查询该钥匙的相关数据、借用人借用信息、该钥匙的当前借用人信息。(3)如果借用人已达到最大借用数,则显示限制提示。如果钥匙已被借走,显示借用人信息与联系方式。(4)如果未达到最大借用数且钥匙处于可借用状态,则解锁对应钥匙位。(5)进入钥匙识别模式以供二次确认。用户将钥匙别进带rfid芯片的钥匙环,将带钥匙环的钥匙贴近读卡器。系统通过读卡器读取钥匙环的rfid的编号,并比对是否为借用钥匙对应的编号。如不是,则提示用户重新识别。(可选)(6)用户确认完成借用操作,系统将锁定对应钥匙位。23.归还钥匙(1)用户通过普通用户或临时用户身份认证进入系统。(2)点击归还按钮,进入钥匙识别模式。(3)用户将钥匙别进带rfid芯片的钥匙环,将带钥匙环的钥匙贴近读卡器。系统通过读卡器读取钥匙环的rfid的编号,检测是否为该钥匙柜已借出的钥匙。如不是,提示错误。如是,解锁对应钥匙位,提示用户放置钥匙。(4)用户确认完成归还操作,系统将锁定对应钥匙位。24.生成用户授权码(1)用户在应用端通过普通用户或临时用户身份认证进入应用系统。(2)点击生成用户授权码按钮,进入生成用户授权码界面。(3)选择运行操作的钥匙与动作,如归还钥匙a的钥匙1。(4)设定有效次数(默认为1)与时限(默认1天)。(可选)(5)应用端通过http协议提交数据到服务器端。服务器端接收请求后,检查用户授权。无误后,生成不重复的随机字符串,并将该字符串、授权用户、钥匙、动作、有效次数、时限保存到数据库中。之后,服务器端将生成的字符串(即用户授权码)返回应用端。(6)应用端显示返回的用户授权码。25.管理员查询钥匙使用日志(1)用户通过管理员身份认证进入系统。(2)系统显示操作界面,用户点击钥匙管理相关的按钮,进入钥匙管理界面。(3)用户在管理界面检索查询并选定需要操作的钥匙,并点击查看日志按钮进行对应操作。(4)钥匙柜端或服务器端将检索数据库中对应用户钥匙id的操作日志,并分页显示。(5)用户可根据需求对日志中存在的字段进行二次检索。26.管理员查询用户操作日志(1)用户通过管理员身份认证进入系统。(2)系统显示操作界面,用户点击需要查找的账号对应管理相关的按钮,进入账号管理界面。(3)用户在管理界面检索查询并选定需要操作的用户,并点击查看日志按钮进行对应操作。(4)钥匙柜端或服务器端将检索数据库中对应用户id的操作日志,并分页显示。(5)用户可根据需求对日志中存在的字段进行二次检索。27.配置钥匙柜(1)通过系统维护员身份认证进入系统。(2)用户设定钥匙柜的外部编号、钥匙柜的名称、钥匙柜信息、钥匙柜说明等钥匙柜属性,并点击保存按钮。系统会通过对于sql语句将信息保存至数据库的配置表。(3)添加本地管理员账号。(4)设定联网模式。如果为离线模式则结束设定,否则需要设置服务器端地址、网络连接认证信息等,并通过访问服务器接口提交钥匙柜相关属性来确认已连接。(5)如果服务器端接收到新的钥匙柜信息,这将信息保存至数据库中,并添加该钥匙柜对应mqtt主题。28.同步钥匙柜端与服务器端的钥匙柜配置(1)用户手动点击同步按钮,或者数据更改自动同步钥匙柜配置数据,或者服务器端下发同步指令。(2)钥匙柜端系统通过sql语句查询保存在数据库配置表里面的上次配置同步时间戳记录,如果不存在或需要全同步则设置为0。(3)钥匙柜通过相应sql语句查询数据库中配置表中信息最近更新时间(lastmodifiedtime)大于上次同步时间戳的记录。(4)钥匙柜将查询得到的需要上传的记录(即为步骤3查询得的记录)转换成json格式封装。(5)钥匙柜通过http的post方法请求同步接口把json数据上传提交给服务器端。(6)服务器端接收数据后解析并效验数据格式,并通过sql语句查询服务器数据库中每个提交的待同步记录的配置名称对应的配置信息最近更新时间(lastmodifiedtime),过滤出比服务器数据库保存的数据要新的记录(钥匙柜端该配置信息最近更新时间>服务器端该配置信息最近更新时间)。(7)如果(6)出错则服务器不进行任何处理,并返回错误信息,并转(12)。(8)如果(6)一切正常,则将新的记录生成对应sql语句(包括将记录更新来源设置为钥匙柜),提交到服务器数据库。(9)服务器端根据请求的“上次同步时间戳记录”,通过相应sql语句查询数据库中配置信息最近更新时间(lastmodifiedtime)大于上次同步时间戳且记录更新来源为应用端的配置表的记录。(10)服务器端将查询得到的需要下发的记录(即为步骤9查询得的记录)转换成json格式封装。(11)服务器端对钥匙柜的请求返回成功信息与需要更新的钥匙记录的json数据。(12)钥匙柜如接收到错误提示则数秒后重试整个同步过程。如果成功,则解析并效验返回数据,将新数据转化成对应sql语句对数据库的记录进行更新,并更新数据库配置表里面的上次同步时间戳记录为请求发送时间。注明:配置表中上次同步时间戳记录不参与同步。29.通讯加密(1)采用内置的自签发的ssl证书作为服务器端与钥匙柜之间https与mqtt通讯证书。(2)所有服务器端与钥匙柜之间mqtt和https通讯均只信任自签发证书,并均经过通讯协议的加密。(3)应用端与服务器端的接口之间的通讯采用aes加密算法的cbc模式与pkcs5padding填充模式进行加密。30.日志记录(1)在钥匙柜端,用户在钥匙柜上所有但涉及数据库写操作的操作与登录、查询操作,均会将操作用户、操作类型、具体操作、操作对象、操作时间保持至数据库,并进行日志上传。(2)在应用端,用户在应用端上所有但涉及数据库写操作的操作与登录、查询、远程指令下达操作,均会将操作用户、操作类型、具体操作、操作对象、操作时间保持至数据库。31.钥匙柜日志上传(1)钥匙柜尝试新日志信息时自动触发日志上传。如为离线模式,日志上传功能禁用。(2)钥匙柜系统将需要上传的日志转换成json格式封装。(3)钥匙柜通过http的post方法请求同步接口把json数据上传提交给服务器端。(4)服务器端接收数据后解析并效验数据格式,并将该日志添加到数据库中,返回成功信息。(5)如上传失败,则下次触发日志上传时或一定时间后重试。32.钥匙解锁(1)外部锁解锁。外部锁为普通钥匙锁,在到达己定的时间之后,将由管理员打开,这时用户才可以通过用户操作区取走钥匙。(2)电磁锁解锁。在用户通过用过操作区经过规定步骤之后,将会打开自己操作权限内的电子锁,这时电磁锁将会打开二十秒,供用户取走钥匙,二十秒之后锁具将重新关闭33.钥匙锁定(1)外部锁锁定。外部锁是普通钥匙锁,由管理员通过外部锁将柜体关闭时,用户无法操作内部的锁具区与控制区。(2)电磁锁锁定。在用户取走钥匙之前,电磁锁将一直处于锁定状态。在用户通过操作系统,打开自己权限内的锁具之后,将具有二十秒的取走钥匙时间,二十秒之后电磁锁将重新归回锁定状态。34.钥匙柜结构钥匙柜主要由五大部分组成外壳、内部支持与固定结构、锁具区、电子控制区、用户操作区。(1)外壳。主要由塑料构成,保证结构稳定,防水的同时,又减轻了重量,外壳上有供工作人员负责的钥匙锁,控制整个钥匙柜门的打开关闭。(2)内部支撑和固定结构。主要由金属、塑料构成,内部由隔离板将柜体的内部空间分为两个区域,用户所观察到区域由锁具,钥匙,操作面板组成。隔离板内的区域则是电子控制区。(3)锁具区。锁具区在内部上方,由电磁锁组成,可根据用户需求设置不同数量的锁具。(4)用户操作区。用户操作区在锁具区下方,由一块触控屏构成,用户在管理员设定的权限下,经过操作步骤,控制锁具的开关。(5)电子控制区。电子控制区位于隔离板内部,由各类电子元件构成,控制整个钥匙柜的运行。35.在应用端修改钥匙柜本地账号信息(1)用户通过管理员身份认证进入系统。(2)系统显示操作界面,用户点击钥匙柜本地用户账号管理相关的按钮,进入钥匙柜本地用户账号管理界面。再选择需要修改本地账号信息的钥匙柜,进入该钥匙柜的本地用户账号管理界面。(3)用户在管理界面检索查询并选定需要操作的用户,并点击修改按钮进行对应操作。(4)用户根据界面指引填写需要修改的新的用户账号信息。系统通过“1.1认证需要的信息的获取”所述方式读取、验证相关信息。如果填写手机号,通过短信验证码验证手机号有效性。(5)应用端通过http请求调用服务器端api,服务器端根据请求内容生成指令。通过远程指令下达功能,下达修改钥匙柜本地账号信息指令与相关数据。(6)钥匙柜接收到指令后,检查指令下达时间,如指令下达时间与当前时间之差未超过阈值。则将读取解析相关数据并执行相应sql语句,在数据库中查询是否存在冲突数据,如相同的手机号、相同的卡号等等。(7)如果超过阈值或数据冲突,钥匙柜通过http接口向服务器端发送错误信息。如不冲突,钥匙柜通过相应sql语句更新数据库记录,并向服务器端发送成功信息。(8)服务器端接收到钥匙柜的错误信息或超时未接收到钥匙柜信息,则返回错误信息,应用端显示相关错误提示。服务器端接收到钥匙柜的成功信息,则返回成功信息,应用端显示成功提示。36.在应用端禁用钥匙柜本地账号(1)用户通过管理员身份认证进入系统。(2)系统显示操作界面,用户点击钥匙柜本地用户账号管理相关的按钮,进入钥匙柜本地用户账号管理界面。再选择需要修改本地账号信息的钥匙柜,进入该钥匙柜的本地用户账号管理界面。(3)用户在管理界面检索查询并选定需要操作的用户,并点击禁用按钮进行禁用处理。(5)应用端通过http请求调用服务器端api,服务器端根据请求内容生成指令。通过远程指令下达功能,下达禁用钥匙柜本地账号信息指令与相关数据。(6)钥匙柜接收到指令后,检查指令下达时间,如指令下达时间与当前时间之差未超过阈值。则将读取解析相关数据并执行相应sql语句,将用户账号禁用。(7)如果超过阈值或数据冲突,钥匙柜通过http接口向服务器端发送错误信息。如不冲突,钥匙柜通过相应sql语句更新数据库记录,并向服务器端发送成功信息。(8)服务器端接收到钥匙柜的错误信息或超时未接收到钥匙柜信息,则返回错误信息,应用端显示相关错误提示。服务器端接收到钥匙柜的成功信息,则返回成功信息,应用端显示成功提示。37.服务器端的远程指令下达(1)在配置钥匙柜中,钥匙柜会发送钥匙柜的相关信息,服务器端会在mqtt服务器生成对应钥匙柜的主题。(2)钥匙柜在非离线模式下,会自动订阅服务器端的mqtt服务器的本机对应的主题。(3)该主题名称由固定字符串+钥匙柜内部唯一编号构成。(4)服务器端在下达指令时会通过向目标钥匙柜对应的主题发布指令数据的方式下达。(5)指令数据由json或msgpack或protobuff的格式进行封装,包括指令的名称、时间、超时时间、指令涉及数据等等。(6)钥匙柜在接收到指令后会通过请求服务器端的http接口发送处理结果,如出错或超时可能会不发送处理结果。如钥匙柜无法在指定的超时时间内完成操作与处理结果的发送,则回滚该指令的操作。(7)服务器端如在指定时间内未接收到处理结果,则视为处理失败,提示用户并进行错误处理。另外,本申请实施例的服务器采用linux系统,并在上面运行相关服务器软件。服务器端分为3个部分,分别为mqtt服务器、api服务器与网页服务器。其中mqtt服务器使用第三方实现,采用emqxbroker或eclipsemosquitto作为mqtt服务器。api服务器与网页服务器均采用javaweb作为开发技术栈,共用一个运行环境与开发框架,并使用nginx作为反向代理对外提供服务。1.api服务器与网页服务器采用的技术该服务器系统基于spring+springmvc+mybatis框架,使用mvc模式进行设计与开发,并采用springsecurity实现访问权限控制,dbcp作为数据库连接池。在实现中,作为网页服务器的视图层返回的网页以静态网页为主,内容采用ajax技术从api接口动态加载。对于api接口,将所有非二进制数据均序列化成json格式进行传输,并通过spring的aop机制实现请求的加密与解密。关于api调用后,需要对钥匙柜下达指令的操作采用mqtt协议实现,服务器系统采用springintegrationmqtt实现与mqtt服务器进行通讯,其背后基于eclipsepaho库。数据库使用mariadb,采用mariabackup实现数据库的热备份与增量备份,并通过定时运行编写的备份脚本实现自动化备份。2.服务器的数据库设计服务器端的数据库表设计与钥匙柜软件的数据库表设计十分相似,此处将会以两者之间的区别进行说明。在用户表上,没有“绑定的服务器端用户id(remoteuserid)”属性,增加了真实姓名(realname)、证件类型(cardtype)、证件号(cardnumber)属性。在钥匙表、用户的钥匙权限表、日志表上,增加了“钥匙柜(cabinet)”属性。服务器端还有一个新表:钥匙柜表。钥匙柜(cabinet)表包括钥匙柜全球唯一标识(cabinetid)、钥匙柜名称(name)、钥匙柜外部编号(outid)、钥匙柜位置(position)、钥匙柜说明(desc)、是否启用(enable)、信息最近更新时间(lastmodifiedtime)、管理钥匙量(keynumber)、当前钥匙量(currkeynumber)。五、应用端设计应用端均与服务器端采用http协议进行通讯,不与钥匙柜进行直接通讯。为了保证通讯的安全性,会对访问api的通讯内容采用aes加密算法的cbc模式与pkcs5padding填充模式进行加密。为保障安全性,对指纹、人脸信息、钥匙柜本地管理员账号的所有操作、维护员登录与相关功能的使用、添加删除与取还钥匙均需要人员亲自到钥匙柜进行操作,其中如果不涉及生物信息的操作,则不要求一定为本人。因此,应用端不支持直接远程借还,但如果不想在钥匙柜上再次登录,可以在应用端生成对应操作的临时码,直接在钥匙柜中输入临时码执行相应操作。1.手机应用端设计手机应用端使用qt框架进行开发,实现一套代码在ios与android双手机平台运行。开发过程中以qml为主,c++为辅,qml负责实现所有的界面与用户交互逻辑,c++负责数据加密解密与原生平台的api接口调用。手机应用端在初次使用时会要求输入服务器端地址(或扫描钥匙柜提供的地址二维码),服务器连接成功后用户可以通过账号密码、短信验证码登录账号。在手机应用端,普通用户可以使用的功能有查看与修改个人信息、生成临时借还码、提交钥匙权限申请、查看钥匙状态等;管理员用户可以使用的功能有查找、禁用普通用户与修改其信息和权限、修改个人信息、查询钥匙或用户日志、修改钥匙信息与禁用钥匙、修改钥匙柜的说明信息等。2.网页版应用端设计网页端采用html5+css3+javascript作为基本技术,使用bootstrap与bootstraptable作为前端开发框架。在使用过程中,大部分数据均使用ajax技术对api进行访问加载,并使用cryptojs库对数据进行加密与解密。网页端在功能上与手机应用端基本一致,但会针对大屏与宽屏做专门的适配与调整,在日志查询浏览、钥匙状态的批量浏览、批量操作等功能在用户体验会有较大的改变。除此之外,网页版还提供维护员所需的相关功能,如系统配置、重置管理员信息等功能。相较于现有技术,本申请具有以下优点:本申请具备临时授权功能,解决临时性借用和代取代还的需求。允许用户自行平衡在身份认证方面的安全性与便携性需求,让管理员灵活配置不同的认证方式相互组合作为身份认证,同时允许单独配置每台钥匙柜的身份认证方式,可以让钥匙柜因地制宜,不同安全要求采用不同认证方式策略。本申请可适应内网连接、公网连接与离线三种网络环境,部署时根据具体情况进行设定。处于内网连接或公网连接当网络临时不可以时也可回退到离线模式,维持基本运行。处于安全考虑,允许管理员对敏感性操作设置二次安全密码。本申请能够让管理员方便管理和紧急控制,提供远程配置钥匙柜功能,可修改钥匙柜信息、禁用或修改钥匙柜本地账号等等。本申请为了保证在紧急情况下钥匙能够正常使用,设计了备用的机械锁钥匙区域,该区域有所有钥匙的备份,机械锁钥匙区域开启后强制中断钥匙柜的电子系统运行,同时代表着移交钥匙管理职责到管理人员。在钥匙柜系统方面,可以在崩溃或系统资源紧张等异常情况下自动重启与恢复。以上是对本发明的较佳实施进行了具体说明,但本发明并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1