# 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.撰写论文 ## 使用技术栈 项目开发环境:Windows 11 / Ubuntu Desktop 22.04 LTS、OpenJDK 11、MySQL 8.0.12、Node 14.18.0、Git(暂定) 项目部署环境:Linux、MySQL 8.0.x、nacos(暂定) | 板块 | 技术栈 | 开发工具 | 依赖管理 | 备注 | | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ----------- | ---- | | 前端 | Vue 3(JavaScript框架)、Element Plus(UI组件库) | VS Code(代码编辑器) | npm 8.19.2 | 暂定 | | 后端 | Java 11(开发语言)、SpringCloud(微服务)、nacos-server-2.1.2(服务注册与发现)、Redis(缓存) | Intellij IDEA Ultimate(集成开发环境)、
Postman(接口测试) | Maven 3.6.3 | | | 小程序端 | Taro 3.x(小程序跨端解决方案)、Vue 3(JavaScript框架) | VS Code(代码编辑器)、
微信开发者工具(微信小程序打包工具)、
小程序开发工具(支付宝小程序打包工具) | npm 8.19.2 | | | 门禁端 | Electron(跨平台桌面GUI应用开发)、Nodejs(JavaScript 运行时环境) | VS Code(代码编辑器) | npm 8.19.2 | | | 数据库 | MySQL 8.0.12(数据存储) | Navicat | - | | ## 数据库设计 > 微服务:一个服务对应一个数据库,同一个信息可能存在不同的数据库 用户表 人员进出日志表 体温上报表 ## 需要注意 ### 写在最前 这个项目是我的本科毕设项目,所以部分功能做的比较粗糙,并不能保证数据安全及抗住并发,不建议直接部署到真实场景使用。 如果你想要拿我的项目作为毕设,我有义务先让你知晓,我并不保证这个项目在你演示的时候不出任何问题,也没有义务免费帮你答疑、安装环境和调试等。当然,如果我有空,可以付费咨询,我不保证付费就能解决你的问题,但如果没有解决你的问题,我不会收你一分钱。 ### 不允许 - ⚠不允许使用这个项目进行广告营销 - ⚠不允许提供本项目第三方下载渠道(例如网盘分享等) - ⚠不允许以任何形式二次出售卖钱。如果你想拿我的项目进行包装后收费卖给其他人,那么这里不欢迎你 - ⚠不允许拿本项目去申请版权、著作权等相关权属证明 ### 一些说明 微信小程序支付功能如果没有微信支付商户号无法开发&测试,我没有商户号,所以微信小程序的支付功能没有做兼容。 支付宝小程序在沙箱环境下,可以测试完整的支付流程,所以支付宝小程序的开发全部在沙箱环境下进行(没有在线上支付宝环境测试过)。 ## 启动项目 ### Step0. 启动前的准备 #### 1.安装运行环境 ##### 概览 需要准备如下项目运行环境 代码管理:[Git](https://git-scm.com/download) 前端:[**Nodejs**](https://nodejs.org/zh-cn/),**npm**(安装node时会自带npm),[**Taro CLI**](https://taro-docs.jd.com/docs/GETTING-STARTED),Vue 3[ ](https://cn.vuejs.org/guide/quick-start.html) 后端:[**OpenJDK 11**](https://jdk.java.net/java-se-ri/11)、[**Maven**](https://maven.apache.org/download.cgi)(需要配置JDK、Maven环境变量及Maven国内镜像源),[**nacos**](https://github.com/alibaba/nacos/releases/tag/2.1.2) 数据库:[**MySQL 8.0.x**](https://downloads.mysql.com/archives/community/)、[Navicat](http://www.navicat.com.cn/products/navicat-premium)(需要激活,可使用其他数据库管理工具代替) 小程序端:[**Taro**](https://taro-docs.jd.com/docs/GETTING-STARTED) 门禁端:[**Electron**](https://www.electronjs.org/),[**cnpm**](https://npmmirror.com/) 开发工具:[VSCode](https://code.visualstudio.com/#alt-downloads)(建议安装扩展:[EditorConfig for VS Code](https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig);[Vue Language Features (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.volar))、[IDEA Ultimate](https://www.jetbrains.com/zh-cn/idea/download/)(需要激活)、[微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html)、[小程序开发工具](https://opendocs.alipay.com/mini/ide/download)(需要安装 `沙箱环境切换插件` 扩展并重启工具) 手机应用:[微信](https://weixin.qq.com/)(用于测试微信小程序)、[支付宝客户端沙箱版](https://open.alipay.com/develop/sandbox/tool/alipayclint)(用于测试支付宝小程序) 接口测试工具:[Postman](https://www.postman.com/downloads/) > 如果希望查看环境变量是否配置成功,可以使用以下命令: > > (下面以 Windows 下命令说明,Linux 系统下 `echo %变量名%` 需要改成 `echo $变量名`) > > ```bash > echo %PATH% > # 您会看到以;分隔的很多路径,其中应该包括: > # JDK 所在文件夹下的 bin 目录:...\openjdk-11\bin > # Maven 所在文件夹下的 bin 目录:...\apache-maven-3.6.3\bin > > echo %JAVA_HOME% > # 您会看到 JDK 所在文件夹 > > echo %MAVEN_HOME% > # 您会看到 Maven 所在文件夹 > ``` > > 如果希望查看环境是否安装成功或安装的环境版本,可以使用以下命令: > > ```bash > # 查看 Git 版本 > git --version > # 您应该看到类似如下输出👇 > # git version 2.35.1.windows.2 > > # 查看 MySQL 版本(如果 MySQL 的 bin 目录没有配在环境变量中,则需要先 cd 切换到 bin 目录下) > mysql --version > # 您应该看到类似如下输出👇 > # mysql Ver 8.0.12 for Win64 on x86_64 (MySQL Community Server - GPL) > > # 查看 JDK 版本 > java -version > # 您应该看到类似如下输出👇 > # openjdk version "11" 2018-09-25 > # OpenJDK Runtime Environment 18.9 (build 11+28) > # OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode) > > # 查看 Maven 版本 > mvn -v > # 您应该看到类似如下输出👇 > # Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f) > # Maven home: xxxxxx\apache-maven-3.6.3\bin\.. > # Java version: 11, vendor: Oracle Corporation, runtime: xxxxxx\openjdk-11 > # Default locale: zh_CN, platform encoding: GBK > # OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows" > > # 查看 node 版本 > node -v > # 您应该看到类似如下输出👇 > # v14.18.0 > > # 查看 npm 版本 > npm -v > # 您应该看到类似如下输出👇 > # 8.19.2 > > # 查看 cnpm 版本 > cnpm -v > # 您应该看到类似如下输出👇 > # cnpm@8.4.0 (C:\Users\Coz\AppData\Roaming\npm\node_modules\cnpm\lib\parse_argv.js) > # npm@8.19.2 (C:\Users\Coz\AppData\Roaming\npm\node_modules\cnpm\node_modules\npm\index.js) > # node@14.18.0 (D:\Program\Development\Environment\nodejs\node.exe) > # npminstall@6.5.2 (C:\Users\Coz\AppData\Roaming\npm\node_modules\cnpm\node_modules\npminstall\lib\index.js) > # prefix=C:\Users\Coz\AppData\Roaming\npm > # win32 x64 10.0.22621 > # registry=https://registry.npmmirror.com > ``` > > Maven 镜像源配置(下面以阿里云镜像为例,其他镜像可自行替换): > > 用编辑器打开 maven 目录下 conf/settings.xml 文件,找到如下位置,将 `` 部分粘贴进去: > > ```xml > > > > > > alimaven > aliyun maven > https://maven.aliyun.com/repository/public > central > > > > ``` > > npm 镜像源配置(下面以淘宝镜像为例,其他镜像可自行替换): > > ```bash > # 配置镜像源 > npm config set registry https://registry.npm.taobao.org/ > # 配置后可通过以下命令查看是否配置成功 > npm config get registry > ``` > ##### cnpm ```bash # electron 需要使用 cnpm 安装依赖 npm install -g cnpm --registry=https://registry.npmmirror.com ``` ##### Taro ```bash npm install -g @tarojs/cli ``` ##### Electron ```bash cd client-entrance-guard cnpm install --save-dev electron cnpm install --save-dev @electron-forge/cli ``` #### 2.克隆项目代码到本地 ```bash # 克隆项目代码到本地 git clone https://github.com/coder-xiaomo/epp # 或者选择以下地址 # git clone https://gitee.com/coder-xiaomo/epp # git clone https://git.only4.work/coder-xiaomo/epp # 进入项目根目录 cd epp ``` #### 3.数据库 导入数据库SQL(SQL文件在 `database` 目录下) #### 4.后端依赖 ```bash # 进入 backend 目录 cd backend mvn clean install # 回到项目根目录下 cd ../ ``` #### 5.前端依赖 代码克隆下来后,第一次需要安装依赖 ```bash # 进入 frontend 目录 cd frontend # 建议使用 cnpm 安装依赖,如果没有安装 cnpm,可以通过 npm i cnpm进行安装 cnpm install # npm install --legacy-peer-deps # 回到项目根目录下 cd ../ ``` #### 6.小程序依赖 ```bash # 进入 miniprogram 目录 cd miniprogram npm install # 回到项目根目录下 cd ../ ``` #### 7.小程序配置 ##### 配置业务域名 1.修改 `miniprogram/src/app.js` 文件 ```javascript App.use(setGlobalDataPlugin, { globalData: { baseUrl: "⚠此处修改为你自己的后端地址。注意需要https://开头,最后不带/", } }) ``` 2.配置服务域名 - 小程序:在[微信小程序后台](https://mp.weixin.qq.com/) - 左侧最下方**开发** - **开发管理** - 右侧上方**开发设置** - **服务器域名** 添加 `https://` 开头的**request合法域名** - 小程序测试号:在[微信小程序后台](https://mp.weixin.qq.com/) - **服务器域名** 添加 `https://` 开头的**request合法域名**(注意不是业务域名) - 支付宝沙箱应用:在[支付宝开放平台](https://open.alipay.com/develop/sandbox/app) - 左侧**沙箱应用** - **服务端域名白名单** 添加 `https://` 开头的**httpRequest接口请求域名白名单** ##### 配置微信小程序appid > ❓在哪里找appid? > > 如果没有注册小程序,可以申请小程序测试号进行测试,申请地址:https://mp.weixin.qq.com/wxamp/sandbox > > 如果已经注册过小程序,可以在此处微信扫码登录:https://mp.weixin.qq.com/ ,然后左侧菜单最后一项【设置】,滑到最下面【帐号信息】,AppID(小程序ID)一栏就是appid 修改 `miniprogram/project.config.json` 文件 ```json { ... "appid": "⚠此处修改为你的微信小程序appid", ... } ``` #### 8.小程序打包 ##### 打包微信小程序 ```bash cd miniprogram npm run build:weapp ``` 打开**微信开发者工具**,小程序目录选择 `miniprogram` 目录 接下来按照正常的小程序发布流程进行发布即可。发布前记得测试小程序各功能是否正常。 ##### 打包支付宝小程序 ```bash cd miniprogram npm run build:alipay ``` 打开**小程序开发者工具**,小程序目录选择 `miniprogram/dist` 目录 **重点:点开右上角【详情】,勾选【小程序配置】下的 `启用小程序基础库2.0构建` 和 `编译node_modules模块(ES6转ES5)`。** 需要注意的是,支付宝小程序打包很慢,需要等比较长的时间。 接下来按照正常的小程序发布流程进行发布即可。发布前记得测试小程序各功能是否正常。 #### 9.门禁端依赖 ```bash cd client-entrance-guard cnpm install ``` #### 10.门禁端打包 > 参考文档:https://www.electronjs.org/docs/latest/tutorial/tutorial-packaging 使用**管理员身份**打开命令行,然后运行以下命令: ```bash npm run package # npm run make ``` `npm run make` 等于先执行 `npm run package`(即 *Import project into Forge*),再 *Create distributable* ### Step1. 启动项目后端 #### 1.启动nacos > standalone代表着单机模式运行,非集群模式 > ```bash cd nacos/bin # Windows startup.cmd -m standalone # Linux/Unix/Mac # sh startup.sh -m standalone # bash startup.sh -m standalone ``` Nacos后台地址为:http://localhost:8848/nacos/index.html,默认用户名密码都是:**nacos** #### 2.启动MySQL #### 3.启动各个微服务 ``` # 启动 UserProvider # 启动 Gateway # ...... ``` ### Step2. 启动项目前端 #### 1.启动后台管理员项目 之后在 `frontend` 目录下运行即可 ```bash npm run serve ``` #### 2.小程序打包 待更新 ### Step3. 启动项目门禁端 编译并运行client-entrance-guard目录下electron项目即可 ## 停止项目 ### Step1. 停止各个微服务 ### Step2. 停止nacos ### Step3. 停止MySQL ## 启动项目开发环境 - 启动开发工具:IDEA Ultimate、VSCode、微信开发者工具、小程序开发工具 - 拉取项目仓库最新代码&切换到对应分支 - 启动数据库及可视化工具:MySQL、Navicat - 启动后端微服务注册中心:nacos - 在本地启动Gateway及各个微服务项目 - 在服务器端启动内网穿透Server端,在本地启动内网穿透Client端 ```bash cd ./intranet-penetration/bin # server rathole ../conf/server.toml # client rathole.exe ../conf/client.toml ``` - 启动接口测试工具:Postman - `miniprogram` 目录下启动命令行:`npm run dev:alipay`(支付宝小程序)、`npm run dev:weapp`(微信小程序) > 因为支付宝小程序和微信小程序输出都在dist目录下,所以不可以同时开发调试 - `client-entrance-guard` 目录下启动命令行:`npm run start`(本地运行门禁端) ## 相关链接 ### 后端 #### 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 ### 小程序端 #### Taro Taro:https://docs.taro.zone/docs #### 微信小程序 开发文档:https://developers.weixin.qq.com/miniprogram/dev/framework/ #### 支付宝小程序 开发文档:https://opendocs.alipay.com/mini/developer/getting-started 支付宝开放平台:https://open.alipay.com/develop/manage 支付宝沙箱应用:https://open.alipay.com/develop/sandbox/app 支付宝沙箱应用 - 文档:https://opendocs.alipay.com/common/02kkv7 ### Electron 开发文档:https://www.electronjs.org/docs/latest/tutorial/quick-start Electron Forge打包时的一些常见问题:https://blog.csdn.net/qq_49700358/article/details/126531158 打包:https://www.electronjs.org/docs/latest/tutorial/tutorial-packaging #### cnpm npmmirror 中国镜像站:https://npmmirror.com/