# Epidemic prevention platform

> 基于微服务的社区疫情防控系统（防疫平台）

代码仓库：[GitHub](https://github.com/coder-xiaomo/epp)  [Gitee](https://gitee.com/coder-xiaomo/epp)  [自建](https://git.only4.work/coder-xiaomo/epp)



## 简介



## 功能

对社区疫情管控模式进行分析，针对社区人员进出入、体温上报、买菜团购、药品购置等日常生活物资的调控与管理进行分析。深入了解微服务架构，设计并实现社区疫情防控系统



## 要求

1.分析社区疫情管控模式需求；
2.深入理解微服务架构思想；
3.设计并实现社区疫情防控各模块；
4.撰写论文



## 功能拆分

| 功能                                     | 功能描述                                                     | 居民端 | 门禁端 | 志愿者端 | 管理员端 |
| ---------------------------------------- | ------------------------------------------------------------ | ------ | ------ | -------- | -------- |
| 社区人员进出入                           | 临时访客的进出申请、放行逻辑（待定）。<br />外出返回居民的进社区提前报备；去外地出行前的提前申请。<br />扩展：<br />1. 二维码状态颜色（要和政府健康码颜色保持基本一致）<br />2. 刷脸、刷卡出入<br /><br />**居民**：进出入<br />1. 居民端展示动态二维码，门禁端识别放行<br />2. 门禁端展示动态二维码，居民端识别放行<br />（对于行动不便人群提供固定二维码）<br />**管理员**：查看、管理居民进出入<br />1. 查看人员进出记录<br />2. 设置指定居民进出权限 | √      | √      |          | √        |
| 体温上报                                 | 体温/健康信息上报；健康码收集<br /><br />**居民**：每日上报体温<br />（每天上报时相同信息默认自动填充，不需要重复填写）<br />**管理员**：<br />1. 查看居民体温上报记录<br />2. 异常记录推送提醒 | √      |        |          | √        |
| 日常生活物资的调控（买菜团购、药品购置） | 三种策略：团购、正常购买&秒杀（防超买）、预定<br />物资有限，分配策略很重要（保证每个用户不会总抢不到，也尽量避免总分配给）。<br />扩展：居民互助交流，物资交换（待定）<br /><br />**居民端**：<br />查看生活物资<br />下单<br />取消订单<br />发布求助信息（比如缺少什么物资）<br />**管理员**：<br />发布/修改/删除物资信息，设置每人/每户最多买多少<br />查看当前物资订单状态<br />查看居民需要的物资求助信息，针对性处理（增补物资等），然后将其标记为已处理/已忽略等 | √      |        | √        | √        |

用户账户创建逻辑：

1. 社区预先导入 (1)社区门牌号信息，以及门牌号对应的户主身份信息；(2)临时租户信息；(3)社区流动人员登记信息
2. 用户注册账号，注册后绑定系统中已有户主信息（必要信息：用户的电话号码（方便发送短信以及社区联系），微信号）



系统保证：

1. 某一功能出现问题不影响其他功能
2. 核心功能出现问题要有降级策略，不能完全不可用
3. 用户信息的安全性



更多可以拓展的功能：

1. 大屏展示
2. 与政府健康码信息同步
3. 系统建设后的平滑过渡（从不使用这个系统到推广这个系统）
4. 社区通知模块（管理员可以发布公告，社区居民点开居民端后可以浏览公告信息），也可以定向发布消息（即方便管理员联系社区居民；进一步扩展可以发送短信等）
5. 部分部署（可以只部署需要用到的模块）



可以参考的一些：

（附源码）springboot社区疫情防控管理系统 毕业设计 164621：https://blog.csdn.net/WeiXin_DZbishe/article/details/127091024 （https://blog.csdn.net/Q_3461074420/article/details/127100890）

【原创】基于JavaWeb的社区疫情防控管理系统（疫情防控管理系统毕业设计）：https://blog.csdn.net/qq_59059632/article/details/127080812

基于springboot社区疫情防控管理系统：https://blog.csdn.net/weixin_46437112/article/details/121885311



疫情防控系统：http://chisc.net/CIOjulebu/dianxinganli/2020-01-31/3883.html

科技防疫——社区疫情防控平台：https://zhuanlan.zhihu.com/p/108992875

【附源码】计算机毕业设计SSM社区疫情防控监管系统：https://blog.csdn.net/bishe409/article/details/127413536

智慧社区防疫管理信息化系统功能清单及价格：https://www.deerpu.cn/soft-1860.html   https://www.deerpu.cn/softPrice-1860.html

网格化社区疫情防控系统建设方案（全国版：云端接入）：http://www.egova.com.cn/web/pdf/%E7%BD%91%E6%A0%BC%E5%8C%96%E7%96%AB%E6%83%85%E9%98%B2%E6%8E%A7%E7%B3%BB%E7%BB%9F%E6%96%B9%E6%A1%88(%E5%85%A8%E5%9B%BD%E7%89%88)-0207.pdf



基于Java+SpringBoot+vue+elementui社区疫情防控系统详细设计实现：https://blog.51cto.com/u_14304894/5578744

【计算机毕业设计】java ssm社区（小区）疫情防控系统：https://blog.csdn.net/qq_15801219/article/details/124359029

【计算机毕业设计】疫情社区管理系统的设计与实现 （新增-健康打卡）：https://blog.csdn.net/newuserphb/article/details/124490818

基于社区的疫情防控系统的设计与实现：https://wenku.baidu.com/view/e9d96532874769eae009581b6bd97f192279bf18.html



## 其他的一些技术无关内容

系统图标，系统名称

系统登录界面可以展示的一些口号：

数据日更新，问题不过夜



## 使用技术栈

项目开发环境：Ubuntu Desktop 22.04 LTS、OpenJDK 11、MySQL 8.0.12

| 板块   | 技术栈                                                       | 开发工具      | 备注 |
| ------ | ------------------------------------------------------------ | ------------- | ---- |
| 前端   | Vue 3（JavaScript框架）、Element Plus（UI组件库）            | VS Code       | 暂定 |
| 后端   | Java 11（开发语言）、SpringCloud（微服务）、nacos-server-2.1.2（服务注册与发现）、Redis（缓存） | Intellij IDEA |      |
| 数据库 | MySQL（数据存储）                                            | Navicat       |      |



## 需要确定的细节

用户是自己注册，还是社区提供账号，或者是社区提供token，用户刷卡实现身份验证？



## 一些需要细想的想法

用户和身份分离：一个用户账号可以绑定多个身份，比如一个社区人员同时可以是志愿者



## 前端系统设计

### 管理员端

### 社区人员端

### 志愿者端

### 门禁端



## 后端模块设计

用户认证模块（用户登录、注册、三方授权登录等）

用户信息模块（用户基本信息<住址，联系方式>）

用户健康状态模块（维护用户的健康状态，与外部系统同步信息）

生活物资模块（维护生活物资商品信息<菜品、药品>）

订单模块（社区人员下单，涉及到秒杀相关，可指定上门派送、自取或者由用户自主选择）

派送模块（）

消息推送模块（系统中出现异常信息，例如系统崩溃，出现体温异常居民等，及时推送管理员）

验证码发送模块（用户注册账户，账号信息变更等）



## 数据库设计

> 微服务：一个服务对应一个数据库，同一个信息可能存在不同的数据库

用户表

人员进出日志表（按月归档）

体温上报表（按日归档）



## 启动项目

### Step1. 启动项目后端

#### 1.启动nacos

Nacos下载地址：https://github.com/alibaba/nacos/releases/tag/2.1.2

> standalone代表着单机模式运行，非集群模式
>

```bash
cd nacos/bin
# Windows
startup.cmd -m standalone
# Linux/Unix/Mac
# sh startup.sh -m standalone
# bash startup.sh -m standalone
```

Nacos后台默认用户名密码都是：**nacos**

#### 2.启动MySQL



#### 3.启动各个微服务



### Step2. 启动项目前端

#### 1.启动后台管理员项目

代码克隆下来后，第一次需要安装依赖

```bash
cd ./frontend
# 建议使用 cnpm 安装依赖，如果没有安装 cnpm，可以通过 npm i cnpm进行安装
cnpm install
# npm install --legacy-peer-deps
```

之后在 `frontend` 目录下运行即可

```bash
npm run serve
```

#### 2.小程序打包

待更新



## 开发步骤记录

### 前端

#### 初始化Element-plus项目

参考：https://blog.csdn.net/weixin_39237340/article/details/121132154

```bash
# 检查 node 版本
node -v
# 安装 vue3 脚手架
npm install -g @vue/cli
# 查看安装的 vue/cli 版本
vue --version
# 使用GUI(可视化面板)形式来创建vue项目
vue ui
# npm install element-plus --save
```



### 后端

#### SpringCloud组件

| 功能                             | 组件                                                         |
| -------------------------------- | ------------------------------------------------------------ |
| 服务注册中心（服务注册与发现）   | Eureka(停更)、Zookeeper、Consul、Alibaba Nacos(推荐)         |
| 服务调用（服务负载与调用）       | Netflix OSS Ribbon(进入维护)、SpringCloud LoadBlancer<br />Netflix Feign(停更)、OpenFeign |
| 服务降级（服务熔断降级）         | Hystrix(停更)、resilience4j、Alibaba Sentinel(推荐)          |
| 服务网关                         | Zuul(停更)、Zuul2(胎死腹中)、SpringCloud Gateway(推荐)       |
| 服务分布式配置（服务分布式配置） | SpringCloud Config(不再使用)、Alibaba Nacos(推荐)            |
| 服务总线                         | SpringCloud Bus(不再使用)、Alibaba Nacos(推荐)               |
| 服务开发                         | Spring Boot                                                  |



#### 创建Module步骤

1. 创建Module
2. 改pom
3. 写yml
4. 主启动
5. 业务类





## 相关链接

### 后端

#### JDK

OpenJDK：https://openjdk.org/

Java SE 11：https://jdk.java.net/java-se-ri/11

#### Spring

Spring Cloud官网：https://spring.io/projects/spring-cloud

Spring Cloud Alibaba GitHub repo：https://github.com/alibaba/spring-cloud-alibaba

Spring initializr：https://start.spring.io/

https://start.spring.io/#!type=maven-project&language=java&platformVersion=2.7.5&packaging=jar&jvmVersion=11&groupId=com.cxyxiaomo&artifactId=entrance&name=Epidemic%20prevention%20platform&description=&packageName=com.cxyxiaomo.entrance&dependencies=lombok,mysql,mybatis

##### Gateway

B站教程：https://www.bilibili.com/video/BV1JB4y1F7aL

#### Maven

MVN REPOSITORY：https://mvnrepository.com/

#### Nacos

Quick Start：https://nacos.io/zh-cn/docs/v2/quickstart/quick-start.html



### 前端

#### Element Plus

Element Plus官网：https://element-plus.gitee.io/zh-CN/

安装：https://element-plus.gitee.io/zh-CN/guide/installation.html

#### Ant Design

Ant Design of Vue：https://www.antdv.com/docs/vue/introduce
