2023年4月21日21:06:13 修复部分bug & 重构补全前端源码
默认账号 - 管理员 admin admin - 默认人脸(手机找个照片然后对着电脑就行)[王思聪、蔡徐坤、马云]
项目页面 1. 管理员界面 http://localhost:8080 2. 客户端界面 http://localhost:8080/front 3. swagger接口界面 http://localhost:8080/swagger-ui.html#/
项目启动 1. 创建数据库face_sign_in并导入/src/face_sign_in.sql 2. 修改/src/main/resources/application-dev.yml里面的配置 3. 对于idea需要配置lombok插件&jdk1.8 | project structure里面level设置成8及以上 4. 使用idea maven 刷新后右上角启动即可
功能使用 1. 注册人脸:先创建新用户再前往录入界面录入(不能太模糊,也可以使用明星的照片) 2. 更新人脸:选择已经录入的人脸然后覆盖 3. 录入访客:后端管理界面手动录入或者excel导入 4. 推送手机:前往http://pushplus.hxtrip.com/send配置对应的key,去后端管理配置出覆盖 5. 百度人脸识别:本项目已经接入了我的百度人脸库,如需要自己创建,前往百度控制中心申请覆盖application的配置
项目开发 1. 后端基于erupt框架 2. 后端管理页面也基于erupt框架自动生成,开发请前往erupt官网阅读文档 3. 客户端基于uniapp开发,源码打包发布在项目的release里面,将项目导入hbuilder即可直接点击运行,打包后将产物覆盖front文件夹即可
docker-compose一键部署(仅需下载docker-compose文件夹运行即可)
用户在可靠验证下实现简化身份确认
在已有用户数据库基础上
传统校验方式:
新型校验方式
因此基于各家人脸识别框架,选用百度作为接口,围绕其开发此系统;




这是一个前后端兼备的前后台分离全栈项目
前台上,PC端选择用主流Vue框架[另一位同学完成]、后台管理采用Erupt框架搭建、web显示采用百度Amis框架及bootstrap完成
后端选用主流的Java SpringBoot搭建,使用Schedule完成动态定时任务,使用AOP拦截消息通过pushPlus进行微信推送。
其他技术,后台管理依靠框架Erupt进行的快速构建,使用swagger集成api文档。采用百度云人脸识别接口基于百度人脸识别SDK完成本地数据库与云人脸库的对接。
此外,为了保障访问的稳定及速率,采用redis对首页常用信息进行缓存,减少了对数据库的查询;采用视图构建表间关系,减少后台对数据库的连表查询,加速响应时间。
【name404.study.face】文件结构
│ FaceApplication.java
│
├─aop 自定义注解实现标记切割
│ LogAspect.java
│ WxPush.java
│
├─common 公共包、存放公共文件
├─config 配置包
│ CompleteScheduleConfig.java
│ RedisConfig.java
│ Swagger2.java
│
├─controllers 控制层
│ FaceController.java
│ RouteController.java
│ SignInController.java
│ UserContorller.java
│ VisitorContorller.java
│
├─dao Dao层
│ GroupDao.java
│ SignLogDao.java
│ SignLogDetailDao.java
│ SystemVariablesDao.java
│ UserDao.java
│ UserDetailDao.java
│
├─entity 数据层
│ Group.java
│ SignLog.java
│ SignLogDetail.java
│ SystemVariables.java
│ User.java
│ UserDetail.java
│
├─handler handler层
│ FetchHandlerImpl.java
│ GlobalExceptionHandler.java
│
├─service 接口层
│ │ BaiduFaceService.java
│ │ GroupService.java
│ │ SignLogService.java
│ │ SystemVariablesService.java
│ │ UserService.java
│ │ VisitorService.java
│ │
│ └─impl 接口实现层
│ BaiduFaceServiceImpl.java
│ GroupServiceImpl.java
│ SignLogServiceImpl.java
│ SystemVariablesServiceImpl.java
│ UserServiceImpl.java
│ VisitorServiceImpl.java
│
└─utils 工具包
Base64Utils.java
OkHttpClientUtil.java
RedisUtil.java
Result.java

基础四个表:用户表、用户组别二级表、签到日志、系统变量(用户反馈可有可无)

视图部分:使用userDetail + signLogDetail减少后台对数据库的连表查询
数据库字段中存在大量引用[存在user_group二级分类菜单中],直接返回的内容不方便使用,使用时连表查询,多次太费空间,因此基于视图一次性创建好引用,方便后台直接调用,加速后台响应
SELECT
`sign_log`.`id` AS `id`,
`sign_log`.`user_name` AS `user_name`,
`sign_log`.`in_time` AS `in_time`,
`sign_log`.`out_time` AS `out_time`,
`sign_log`.`msg` AS `msg`,
`sign_log`.`date` AS `date`,
`a`.`name` AS `user_group`,
`d`.`name` AS `to_do`,
`b`.`name` AS `class_group`,
`c`.`name` AS `unit_group`,
`sign_log`.`sign_time` AS `sign_time`
FROM
((((
`sign_log`
LEFT JOIN `user_group` `a` ON ((
`sign_log`.`user_group` = `a`.`id`
)))
LEFT JOIN `user_group` `b` ON ((
`sign_log`.`class_group` = `b`.`id`
)))
LEFT JOIN `user_group` `c` ON ((
`sign_log`.`unit_group` = `c`.`id`
)))
LEFT JOIN `user_group` `d` ON ((
`sign_log`.`to_do` = `d`.`id`
)))
[UserService][UserDao]
用户基础服务 [Dao层接口定义]
数据库设计
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`real_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`status` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0',
`face_id` int(11) NULL DEFAULT NULL,
`user_group` int(11) NULL DEFAULT 5,
`now_sign_id` int(11) NULL DEFAULT NULL,
`email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`telphone` int(11) NULL DEFAULT NULL,
`expired_time` datetime NULL DEFAULT NULL,
`sign_state` bit(1) NULL DEFAULT b'0',
`class_group` bigint(20) NULL DEFAULT 0,
`unit_group` bigint(20) NULL DEFAULT 0,
PRIMARY KEY (`id`) USING BTREE,
INDEX `FK5ixd8ou7x5sln7b00u8qpf7il`(`group_id`) USING BTREE,
CONSTRAINT `FK5ixd8ou7x5sln7b00u8qpf7il` FOREIGN KEY (`group_id`) REFERENCES `user_group` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = COMPACT;
模块效果

模块流程

[SystemVariablesService][SystemVariablesDao]
系统变量服务 [map存储复杂的系统变量] [通过key获取value的json] [通过对json修改实现变量增删改查] [简化数据库,方便统一处理常量]
数据库设计
-- ----------------------------
-- Table structure for system_variables
-- ----------------------------
DROP TABLE IF EXISTS `system_variables`;
CREATE TABLE `system_variables` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`my_key` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`my_value` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = COMPACT;
模块流程

模块效果
[SignLogService][SignLogDao]
签到日志服务 [基本增删改查] [签到逻辑处理] [Dao层接口]
数据库设计
-- ----------------------------
-- Table structure for sign_log
-- ----------------------------
DROP TABLE IF EXISTS `sign_log`;
CREATE TABLE `sign_log` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`user_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`in_time` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`msg` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`out_time` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`sign_time` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`to_do` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`user_group` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`date` datetime NULL DEFAULT NULL,
`from_user_id` bigint(20) NULL DEFAULT NULL,
`user_class` bit(1) NULL DEFAULT NULL,
`class_group` bigint(20) NULL DEFAULT NULL,
`unit_group` bigint(20) NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 90 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = COMPACT;
模块流程

模块效果
[BaiduFaceService]
模块流程

模块效果
人脸识别服务 [人脸库的增删改查] [人脸库对接本地数据库]
[GroupService]
对于一些杂乱的内容设置二级分类方便统一管理
数据库设计
```sql
-- Table structure for
$ claude mcp add face-check-in-system \
-- python -m otcore.mcp_server <graph>