原创

基于SpringBoot2+vue2的疫苗发布和接种预约系统

温馨提示:
本文最后更新于 2026年05月28日,已超过 13 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

1. 资源

浏览全文可获取

2. 项目简介

疫苗发布和接种预约系统旨在为疫苗管理、信息公示及接种预约提供一个线上平台。系统主要面向三类角色:管理员、医生和普通用户。

  • 管理员:负责系统的核心配置与数据管理,包括管理员账户管理、基础数据(如疫苗类型、医院类型、公告类型)字典维护、论坛内容监管、公告信息发布、疫苗和医院信息管理、用户和医生账户管理,以及网站轮播图的配置。
  • 医生:登录后可查看论坛交流信息、公告、疫苗及医院详情,并能够对用户的“预约接种”申请进行审核处理。
  • 用户:作为系统的核心服务对象,用户可以浏览公告、查看疫苗和医院信息、参与论坛讨论,并对感兴趣的疫苗进行在线预约接种。

系统通过角色区分功能权限,实现了从信息发布、查询、互动交流到预约服务的一体化流程。

3. 技术栈

该项目是一个典型的基于Spring Boot和MyBatis-Plus的B/S架构应用,其核心开发技术栈如下:

  • 后端框架: Spring Boot (版本 2.2.2.RELEASE)
  • 持久层框架: MyBatis-Plus (版本 2.3)
  • 安全与控制: Apache Shiro (版本 1.3.2) 用于权限控制,并配合自定义Token实现认证
  • 数据库: MySQL (驱动版本 8.0.11)
  • 前端框架 (后台管理): Vue.js + Element UI
  • 前端技术 (前台展示): HTML + LayUI + Vue.js
  • 其他关键库:
    • fastjson: 用于JSON处理
    • hutool: Java工具库
    • commons-lang3: Apache通用工具库
    • poi: 用于Excel文件导入导出

4. 详细介绍

系统功能模块根据用户角色划分清晰,核心业务围绕疫苗信息发布与预约管理展开。

4.1 核心功能模块

  1. 疫苗信息管理

    • 管理员可以添加、修改、删除、查询疫苗信息,包括疫苗名称、类型、所属医院、图片、详情等。
    • 前端用户和医生可以浏览疫苗列表,查看详情,并记录点击次数以体现热度。
  2. 预约接种流程

    • 用户在浏览疫苗详情页时,可点击“预约接种疫苗”按钮,填写预约日期和备注信息,提交预约申请。
    • 提交的申请状态默认为“未处理”。
    • 医生登录后台后,在“预约接种管理”菜单中可查看所有预约申请,并进行“同意”或“拒绝”的审核操作,同时可填写审核原因。
    • 用户可以查看自己的预约申请及审核状态和结果。
  3. 医院信息管理

    • 管理员管理提供疫苗接种服务的医院信息,包括医院名称、类型、地址、图片和详情。
    • 前端展示医院列表和详情页,方便用户了解接种地点。
  4. 信息发布与互动

    • 公告信息:管理员可发布系统公告(如接种通知、政策变化),并定义公告类型。公告在前端首页和公告列表页展示。
    • 论坛交流:所有已登录用户(包括用户和医生)均可以发布帖子、回复帖子,形成一个围绕疫苗话题的社区。
    • 轮播图:管理员可以配置首页轮播图,用于宣传重要信息。
  5. 基础数据与用户管理

    • 字典管理:管理员可以维护“疫苗类型”、“医院类型”、“公告类型”、“帖子状态”等全局选项,增强了系统的可配置性。
    • 用户/医生管理:管理员可以管理注册用户和医生的账户信息(增删改查、重置密码)。用户和医生也可以在前端进行注册和修改个人信息。

4.2 数据库设计

  • yimiao: 存储疫苗的核心信息,并外键关联到 yiyuan (医院信息) 表。
  • yuyuejiezong: 存储用户的预约接种记录,外键关联到 yonghu (用户) 和 yimiao (疫苗) 表。
  • yiyuan: 存储医院详细信息。
  • forum: 存储论坛帖子,通过类型字段区分主帖和回帖。
  • news: 存储系统公告信息。
  • dictionary: 字典表,用于为系统中的多种类型字段(如疫苗类型、审核状态等)提供枚举值。
  • yonghu & yisheng: 分别存储用户和医生的账户与身份信息。
  • users: 存储管理员账户信息。
  • token: 存储用户的登录凭证信息。
  • config: 存储系统配置项,如轮播图路径。

数据库设计遵循了第三范式,通过外键和字典表确保了数据的完整性和一致性。

5. 部分代码

5.1 后端启动类 (yimiaofabuhejiezhongApplication.java)

package com;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
@ServletComponentScan(value = "com.ServletContextListener")
@MapperScan(basePackages = {"com.dao"})
public class yimiaofabuhejiezhongApplication extends SpringBootServletInitializer {
    public static void main(String[] args) {
        SpringApplication.run(yimiaofabuhejiezhongApplication.class, args);
    }
}

5.2 预约接种控制器 (YuyuejiezongController.java)

以下代码展示了后端处理预约申请审核(更新状态)的逻辑:

/**
* 后端修改(用于医生审核预约)
*/
@RequestMapping("/update")
public R update(@RequestBody YuyuejiezongEntity yuyuejiezong, HttpServletRequest request){
    logger.debug("update方法:,,Controller:{},,yuyuejiezong:{}",this.getClass().getName(),yuyuejiezong.toString());

    // 根据字段查询是否有相同数据,防止重复提交
    Wrapper<YuyuejiezongEntity> queryWrapper = new EntityWrapper<YuyuejiezongEntity>()
        .notIn("id",yuyuejiezong.getId())
        .andNew()
        .eq("yonghu_id", yuyuejiezong.getYonghuId())
        .eq("yimiao_id", yuyuejiezong.getYimiaoId());
        // ... 其他条件

    logger.info("sql语句:"+queryWrapper.getSqlSegment());
    YuyuejiezongEntity yuyuejiezongEntity = yuyuejiezongService.selectOne(queryWrapper);
    if(yuyuejiezongEntity==null){
        // 更新预约信息,主要是审核状态和审核原因
        yuyuejiezongService.updateById(yuyuejiezong);
        return R.ok();
    }else {
        return R.error(511,"表中有相同数据");
    }
}

5.3 核心配置文件 (application.yml)

# Tomcat
server:
    port: 8080
    servlet:
        context-path: /yimiaofabuhejiezhong

spring:
    datasource:
        driverClassName: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://127.0.0.1:3306/yimiaofabuhejiezhong?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
        username: root
        password: 123456

# mybatis-plus配置
mybatis-plus:
  mapper-locations: classpath*:mapper/*.xml
  typeAliasesPackage: com.entity
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 打印sql语句

6. 部分截图

img1
img2
img3
img4
img5
img6
img7
img8
img9
img10
img11
img12
img13
img14
img15
img16
img17
img18
img19
img20
img21
img22
img23
img24
img25
img26
img27
img28
img29
img30
img31
img32
img33
img34
img35

7. 项目总结

该“疫苗发布和接种预约系统”是一个功能完备、结构清晰的综合性Web应用程序。

  • 功能完整性:系统覆盖了从基础信息管理(疫苗、医院)、内容发布(公告、论坛)到核心业务(在线预约)的完整链条,满足了不同角色用户的需求。
  • 技术应用:项目采用了业界主流的Spring Boot + MyBatis-Plus + Vue.js技术栈,架构清晰,代码结构规范。通过自定义Token和Shiro实现了接口安全控制,利用MyBatis-Plus简化了数据访问操作。
  • 用户体验:前后端分离的设计模式,使得后台管理高效,前台界面交互友好。通过论坛模块,增加了用户与医生之间的互动性。

总体而言,该项目成功实现了一个线上疫苗预约和管理系统的基本模型,具有良好的可扩展性和学习参考价值。

自助获取:https://fifteen.xiaobias.com/source/203

正文到此结束
本文目录