基于全注解 SSM 和 Bootstrap 的两码一查系统

2024-01-14 12:30

本文主要是介绍基于全注解 SSM 和 Bootstrap 的两码一查系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Spring-_-Bear 的 CSDN 博客导航

文章目录

  • 一、快速开始
  • 二、背景调查
  • 三、需求分析
  • 四、系统设计
    • 4.1 数据库设计
      • 4.1.1 实体及属性
      • 4.1.2 实体间关系
      • 4.1.3 逻辑结构设计
    • 4.2 功能设计
  • 五、效果展示
    • 5.1 用户登录
    • 5.2 重置密码
    • 5.3 超级管理员
      • 5.3.1 导入班级
      • 5.3.2 添加主任
      • 5.3.3 班级管理
      • 5.3.4 角色修改
    • 5.4 学生
      • 5.4.1 图片上传
      • 5.4.2 修改密码
      • 5.4.3 历史记录
      • 5.4.4 个人资料
    • 5.5 班长
    • 5.6 班主任
    • 5.7 年级主任
      • 5.7.1 主任资料
      • 5.7.2 年级记录
  • 六、技术选型
  • 七、待办事项

开发时间SpringMyBatisBootstrap开源项目
22/06/02 - 22/09/155.3.13.5.73.4.1images-gather

一、快速开始

  1. 克隆仓库:使用 Git 克隆仓库或直接下载仓库压缩包到您的计算机来获取源代码。
  2. 打开工程:使用 IntelliJ IDEA 开发工具打开克隆的仓库或解压的工程文件,而后使用 Maven 项目构建工具更新工程模块依赖。
  3. 创建数据库并导入数据:登录 MySQL 控制台,创建一个名为 images_gather 的数据库,并将 document/sql/images_gather.sql 脚本中的建表语句和数据导入到 images_gather 数据库中。
  4. 修改配置:
    • 修改 src/main/webapp/static/js/gather-common.js 中的 contextPath 变量值,此为后端接口请求路径。
    • 修改 src/main/resources/jdbc.properties 文件中的数据库连接信息,设置你自己的数据库用户名和密码。
    • 修改 src/main/resources/email.properties 中的邮箱服务器信息,设置你自己的邮箱账号和服务器。
    • 修改 src/main/resources/qiniu.properties 中的七牛云配置信息,设置你自己的七牛云令牌信息。
    • 修改 src/main/resources/baidu.properties 中的百度地图配置信息,设置你自己的百度地图 IP 解析 URL。
  5. 部署访问:在 IntelliJ IDEA 中部署 Tomcat 并启动即可访问两码一查首页,需要注意工程上下文路径需与配置的后端接口请求路径相同。
  6. 登录系统:
    • 学生:用户名和密码均为 10086。
    • 班长:用户名和密码均为 10087。
    • 班主任:用户名和密码均为 10088。
    • 年级主任:用户名和密码均为 10089。
    • 超级管理员:用户名和密码均为 admin。

二、背景调查

2019 年底开始流行的新型冠状病毒(2019-nCoV)疫情给全世界人民带来了无法考量的灾难。新冠疫情泛滥两年多来,已夺走数百万条声明,世界经济几乎陷入停顿,习以为常的生活无法复原,损失极其惨重,全世界都在期盼疫情尽快结束,期待后疫情时代早日到来。

在全国人民众志成城地抗疫下,如今国内疫情形势得到了有效的控制。疫情初期由杭州市于 2020 年 2 月 11 日率先在全国推出的基于绿色、黄色和红色的健康码以个人健康数据为基础,由居民自主通过健康登记系统网上申报,结合新冠肺炎疫情相关数据进行比对核验,生成的个人专属二维码。该二维码作为个人在当地出入通行的一个电子凭证,实现一次申报,全市通用。

健康码的应用涵盖了社区管理、企业复工、交通出行、学校开学、买药登记、超市商场等使用场景,可以协助社区、企业、学校等做好防疫管理及疫情控制等重点工作。在疫情防控和复产复工中,健康码可以实现高效率的人员流动管理,在办公楼、商场、地铁、火车站等人流密集的地点提高过检效率,避免过多的人员接触和聚集。

2020 年 12 月 10 日,国家卫健委、国家医保局、国家中医药管理局联合发布《关于深入推进“互联网+医疗健康”“五个一”服务行动的通知》,明确要求各地落实 “健康码” 全国互认、一码通行。

2021 年 3 月 23 日,国家卫生健康委员会在发布会上介绍,全国基本实现了健康码的 “一码通行”。3 月 30 日,国家政务服务平台 “防疫健康码” 已整合 “通信大数据行程卡” 相关信息,可在健康码中显示用户是否去过中高风险地区等行程信息,助力健康码 “一码通行”。后续由国家政务服务平台推出的同行密接人员自查与健康码、行程码同属一类防疫工具,旨在为大众提供更加便捷的防疫信息查询和个人健康管理。

三、需求分析

如今,各高校内核酸采集检测已为常态化,使用核酸结果验证区域内是否存在患者的同时亦可以通过验证学生健康码、行程码、密接自查(后续简称为两码一查)数据信息的方式监测管理学生的健康状态。

经走访调查,湖北省武汉市某高校要求学生每日上传个人两码一查图片信息以配合防疫,该方式实际实施的过程中相当耗费学生精力。两码一查图片收集信息管理大致过程概述如下:首先由学生个人从健康码、行程码、密接查查询入口查询个人当天的健康信息并截图保存,而后按照统一格式要求对图片进行命名并打包发送给相关负责人。接下来由班长负责校验当天该班所有学生两码一查健康信息,需解压每一位同学的压缩包并依次点击查看两码一查图片信息,过程繁重琐碎易出错,班长还需要劳苦地核对有哪些同学尚未提交今日两码一查,需要对尚未上传同学进行督促并私聊该同学尽快上传两码一查图片信息,并且图片数据的保留保存问题也较为困难。

针对图片收集、文件命名、文件解压、信息查看管理等繁杂过程,我们的两码一查图片收集信息管理系统应运而生,旨在提高学生每日上传图片和信息管理的效率,愿景是减轻每一位同学的负担。主要功能包括由学生自主上传两码一查图片信息、自动规范化命名、后台自动校验健康信息是否存在异常、系统通过邮箱或短信方式自动提醒当天未完成同学、管理员查看班级上传信息、管理员对已上传同学的数据进行复核以及历史记录(上传和登录)查看等功能。该系统作为校园防疫健康信息管理的一站式解决方案,包括学院管理、班级管理、教师管理、学生管理、健康信息查询与统计等功能。

四、系统设计

4.1 数据库设计

4.1.1 实体及属性

  1. 用户:用户 ID,用户名,密码,电话,邮箱,用户类型,用户状态,姓名,性别,学校 ID,年级 ID,班级 ID,登录时间,创建时间
  2. 学校:学校 ID,校名
  3. 年级:年级 ID,年级名称
  4. 班级:班级ID,班级名称
  5. 上传记录:上传记录 ID,上传记录状态,上传时间,健康码本地 url,行程码本地 url,密接查本地 url,健康码云 url,行程码云 url,密接查云 url,用户 ID,创建时间
  6. 登录记录:登录记录 ID,IP,登录地点,登录时间,用户 ID
  7. 邮件记录:邮件记录 ID,邮箱,验证码,发送时间,用户ID

4.1.2 实体间关系

  1. 用户与学校:一个用户对应一个学校,一个学校下包含多个用户,故用户与学校间是多对一关系。
  2. 用户与年级:一个用户对应一个年级,一个年级下包含多个用户,故用户与年级间是多对一关系。
  3. 用户与班级:一个用户对应一个班级,一个班级下包含多个用户,故用户与班级间是多对一关系。
  4. 用户与上传记录:一个用户可以有多条上传记录,一条上传记录对应一个用户,所以用户与上传记录间是一对多关系。
  5. 用户与登录记录:一个用户可以有多条登录记录,一条登录记录对应一个用户,所以用户与登录记录间是一对多关系。
  6. 用户与邮件记录:一个用户可以有多条邮件记录,一条邮件记录对应一个用户,所以用户与邮件记录间是一对多关系。
  7. 学校与年级:一所学校下可有多个年级,一个年级对应一所学校,所以学校与年级间是一多对关系。
  8. 年级与班级:一个年级下可有多个班级,一个班级对应一个年级,所以年级与班级间是一对多关系。

4.1.3 逻辑结构设计

  1. 用户:用户 ID,用户名,密码,电话,邮箱,用户类型,用户状态,姓名,性别,学校 ID,年级 ID,班级 ID,登录时间,创建时间

    数据项数据类型
    id(主键、自增)int
    username(唯一索引)varchar(255)
    passwordchar(32)
    phonevarchar(255)
    emailvarchar(255)
    user_typeint
    user_statusint
    namevarchar(255)
    sexchar(2)
    school_id(外键)int
    grade_id(外键)int
    class_id(外键)int
    last_login_datetimedatetime
    create_datetimedatetime
  2. 上传记录:上传记录 ID,上传记录状态,上传时间,健康码本地 url,行程码本地 url,密接查本地 url,健康码云 url,行程码云 url,密接查云 url,用户 ID

    数据项数据类型
    id(主键、自增)int
    upload_statusint
    upload_datetimedatetime
    local_health_urlvarchar(255)
    local_schedule_urlvarchar(255)
    local_closed_urlvarchar(255)
    cloud_health_urlvarchar(255)
    cloud_schedule_urlvarchar(255)
    cloud_closed_urlvarchar(255)
    user_id(外键)int
  3. 登录记录:登录记录 ID,IP,登录地点,登录时间,用户 ID

    数据项数据类型
    id(主键、自增)int
    ipchar(15)
    locationvarchar(255)
    login_datetimedatetime
    user_id(外键)int
  4. 邮件记录:邮件记录 ID,邮箱,验证码,发送时间,用户 ID

    数据项数据类型
    id(主键、自增)int
    emailvarchar(255)
    codevarchar(255)
    delivery_datetimedatetime
    user_id(外键)int
  5. 学校:学校 ID,校名

    数据项数据类型
    id(主键、自增)int
    schoolvarchar(255)
  6. 年级:年级 ID,年级名称

    数据项数据类型
    id(主键、自增)int
    gradevarchar(255)
  7. 班级:班级ID,班级名

    数据项数据类型
    id(主键、自增)int
    class_namevarchar(255)

4.2 功能设计

在这里插入图片描述

五、效果展示

5.1 用户登录

  1. 用户名不存或密码:当用户选择登陆时进行用户名和密码正确性校验,当用户名不存在或密码错误时友好提示用户。
  2. 记住我:当用户勾选记住我并且输入的用户名和密码无误时,服务器将从响应头中告知浏览器保存用户名和密码信息到 Cookie 中,当用户下次登录系统时直接从 Cookie 中读取用户名和密码的值并自动填充到输入框中。
  3. 用户类型和用户状态判断,若用户状态异常或类型不存在则不允许用户使用系统。

在这里插入图片描述

5.2 重置密码

  1. 获取邮箱验证码时用户名非空校验,邮箱地址格式校验。
  2. 用户名和邮箱地址不匹配时不允许修改密码。
  3. 点击确认按钮时再次校验邮箱、用户名格式,额外校验验证码长度位数必须为 6 位,新密码长度不小于 6 位。
  4. 在用户点击确认按钮重置个人密码之前,必须点击获取按钮获取邮箱验证码。
  5. 邮箱验证码发送,用户填入正确的用户名和邮箱,即可请求服务器发送一封邮箱验证码邮件到个人邮箱中作为重置密码的身份校验。

在这里插入图片描述

5.3 超级管理员

5.3.1 导入班级

管理员可上传班级信息模板 Excel 文件,根据自定义的 sheet-bean-converter.jar 包完成 Excel 数据与 Java Bean 对象间的转换,后可将相应的学生数据转换为用户数据并批量导入到数据库中。

在这里插入图片描述

5.3.2 添加主任

管理员可填入年级主任信息并选择学校和班级,从而设置对应的年级主任用户账号。

在这里插入图片描述

5.3.3 班级管理

管理员可选择学校、年级、班级,后显示改班级下的所有学生,并供管理员修改学生类型的功能。

在这里插入图片描述

5.3.4 角色修改

管理员选择操作学生,并修改其用户角色,可修改为学生、班长或班主任。

在这里插入图片描述

5.4 学生

5.4.1 图片上传

  1. 选择个人健康码图片、行程码图片、密接查图片后方可上传。
  2. 图片上传完成,在服务器留存的同时在七牛云平台留存图片信息,数据安全双重保障。

在这里插入图片描述

5.4.2 修改密码

  1. 系统点击主页面右上角的改密按钮,弹出密码修改模态框。
  2. 新密码长度不小于 6 位且两次输入的新密码需保持一致,新密码与原密码一致时不允许修改。
  3. 服务端校验新旧密码是否一致,一致时不允许修改个人密码,原密码有误时亦不允许修改个人密码。

在这里插入图片描述

5.4.3 历史记录

  1. 今日上传记录查询,当用户一天内两次及以上登入系统时,若用户已完成图片上传显示已上传的两码一查图片信息,用户可以重新上传图片。

    在这里插入图片描述

  2. 个人历史登录记录数据分页查看,显示登录的时间、登录IP、地点(由百度地图开发者 API 提供解析服务)信息。

    在这里插入图片描述

  3. 上传记录查看,用户可查看已上传的两码一查图片信息,并提供图片查看的功能。

    在这里插入图片描述

5.4.4 个人资料

  1. 提供用户个人资料查看的入口即系统主页面点击【我的】可查看自己的详细信息。
  2. 个人信息修改,用户可以修改自己的性别、电话、邮箱等信息,修改过程中对信息进行校验,前后数据未发生变化、数据格式不正确则不允许修改。
  3. 个人信息修改成功,3s 后自动刷新页面。

在这里插入图片描述

5.5 班长

  1. 班长可查看班级上传记录,PC 端可查看最近 14 的上传记录,移动端查看最近 7 天的上传记录,分为未登录人员名单、登录未上传人员名单和已完成人员名单并生成各位同学的图片预览。
  2. 班长可点击日期链接下载该天该班级的两码一查上传情况,包含了已上传的图片数据和班级名单 README.txt。

在这里插入图片描述

5.6 班主任

班主任功能与班长类似,不同的是班主任无需跳转到上传页面且显示当前的登录信息,包含登录时间、地点、IP 等。

在这里插入图片描述

5.7 年级主任

5.7.1 主任资料

年级主任登录记录、我的资料、修改密码功能与班主任相同,唯一不同的是年级主任可查看年级上传记录。

在这里插入图片描述

5.7.2 年级记录

  1. 班级未上传信息概览。

    在这里插入图片描述

  2. 班级上传详情查看,点击对应班级即可查看该班人员信息,包含了未登录名单、未上传名单、已完成名单和图片概览。

    在这里插入图片描述

六、技术选型

前端技术
HTML5、CSS3、JavaScript、jQuery1.7.2、Bootstrap3.4.1、Ajax、正则表达式
后端技术
Spring5.3.1、SpringMVC5.3.1、MyBatis1.3.2、SpringTest5.3.1、JUnit4.12、Thymeleaf3.0.12、MySQL8.0.27、Druid1.1.15、Logback1.2.3、Lombok1.18.20、Jackson2.9.8、PageHelper5.2.0、Qiniu7.8.0、JavaxMail1.6.2、SheetBeanConverter1.0.0、Tomcat8.0.50、Maven3.8.4、Git2.35.1、百度地图 IP 归属地解析、网易邮箱验证码服务、七牛云平台数据存储
开发工具
IntelliJ IDEA2021.1、Visual Studio Code、Java1.8.0_311、MySQL8.0.28、Navicat16.0.13、Git2.35.1、Maven3.8.4、Tomcat8.0.50、CentOS7.6、XShell6、Xftp6、Typora1.3.6、Snipaste、ioDraw、XMind

七、待办事项

事项进度
密码加密传输和保存
支持多种登录方式(用户名、电话、邮箱)
后台管理功能设计实现
前后台真正意义上动静分离
年级上传记录分班级概览与详情查看
班级上传资料压缩下载(图片、名单)
负载均衡
持续化集成与部署
七牛云平台图片防盗(私有空间)
邮箱验证码的最大有效时间
Python 两码一查状态识别
请求发送邮件时增加人机验证
Redis 缓存提高系统并发能力

这篇关于基于全注解 SSM 和 Bootstrap 的两码一查系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/605154

相关文章

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Java利用@SneakyThrows注解提升异常处理效率详解

《Java利用@SneakyThrows注解提升异常处理效率详解》这篇文章将深度剖析@SneakyThrows的原理,用法,适用场景以及隐藏的陷阱,看看它如何让Java异常处理效率飙升50%,感兴趣的... 目录前言一、检查型异常的“诅咒”:为什么Java开发者讨厌它1.1 检查型异常的痛点1.2 为什么说

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详

更改linux系统的默认Python版本方式

《更改linux系统的默认Python版本方式》通过删除原Python软链接并创建指向python3.6的新链接,可切换系统默认Python版本,需注意版本冲突、环境混乱及维护问题,建议使用pyenv... 目录更改系统的默认python版本软链接软链接的特点创建软链接的命令使用场景注意事项总结更改系统的默

在Linux系统上连接GitHub的方法步骤(适用2025年)

《在Linux系统上连接GitHub的方法步骤(适用2025年)》在2025年,使用Linux系统连接GitHub的推荐方式是通过SSH(SecureShell)协议进行身份验证,这种方式不仅安全,还... 目录步骤一:检查并安装 Git步骤二:生成 SSH 密钥步骤三:将 SSH 公钥添加到 github

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方