1
0
Code Issues Pull Requests Packages Projects Releases Wiki Activity GitHub Gitee
epp/README.md

513 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 3JavaScript框架、Element PlusUI组件库 | VS Code代码编辑器 | npm 8.19.2 | 暂定 |
| 后端 | Java 11开发语言、SpringCloud微服务、nacos-server-2.1.2服务注册与发现、Redis缓存 | Intellij IDEA Ultimate集成开发环境<br />Postman接口测试 | Maven 3.6.3 | |
| 小程序 | Taro 3.x小程序跨端解决方案、Vue 3JavaScript框架 | VS Code代码编辑器<br />微信开发者工具(微信小程序打包工具)、<br />小程序开发工具(支付宝小程序打包工具) | 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)(需要激活,可使用其他数据库管理工具代替)
开发工具:[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 版本
> # 您应该看到类似如下输出👇
> # 8.19.2
> ```
>
> Maven 镜像源配置(下面以阿里云镜像为例,其他镜像可自行替换):
>
> 用编辑器打开 maven 目录下 conf/settings.xml 文件,找到如下位置,将 `<mirror></mirror>` 部分粘贴进去:
>
> ```xml
> <!-- mirrors
> | This is a list of mirrors to be used in downloading artifacts from remote repositories.
> |
> | It works like this: a POM may declare a repository to use in resolving certain artifacts.
> | However, this repository may have problems with heavy traffic at times, so people have mirrored
> | it to several places.
> |
> | That repository definition will have a unique id, so we can create a mirror reference for that
> | repository, to be used as an alternate download site. The mirror site will be the preferred
> | server for that repository.
> |-->
> <mirrors>
> <!-- mirror
> | Specifies a repository mirror site to use instead of a given repository. The repository that
> | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
> | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
> |
> <mirror>
> <id>mirrorId</id>
> <mirrorOf>repositoryId</mirrorOf>
> <name>Human Readable Name for this Mirror.</name>
> <url>http://my.repository.com/repo/path</url>
> </mirror>
> -->
> <!-- ######## 👇👇👇将以下部分粘贴进去👇👇👇 ######## -->
> <mirror>
> <id>alimaven</id>
> <name>aliyun maven</name>
> <url>https://maven.aliyun.com/repository/public</url>
> <mirrorOf>central</mirrorOf>
> <!-- ######## 👆👆👆将以上部分粘贴进去👆👆👆 ######## -->
> </mirror>
> </mirrors>
> ```
>
> npm 镜像源配置(下面以淘宝镜像为例,其他镜像可自行替换):
>
> ```bash
> # 配置镜像源
> npm config set registry https://registry.npm.taobao.org/
> # 配置后可通过以下命令查看是否配置成功
> npm config get registry
> ```
>
>
#### 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.数据库
导入数据库SQLSQL文件在 `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/ ,然后左侧菜单最后一项【设置】,滑到最下面【帐号信息】,<u>AppID(小程序ID)</u>一栏就是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`。**
需要注意的是,支付宝小程序打包很慢,需要等比较长的时间。
接下来按照正常的小程序发布流程进行发布即可。发布前记得测试小程序各功能是否正常。
### 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.小程序打包
待更新
## 停止项目
### 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
- 启动命令行:`npm run dev:alipay`(支付宝小程序)、`npm run dev:weapp`(微信小程序)
> 因为支付宝小程序和微信小程序输出都在dist目录下所以不可以同时开发调试
- 拉取项目仓库最新代码&切换到对应分支
## 相关链接
### 后端
#### JDK
OpenJDKhttps://openjdk.org/
Java SE 11https://jdk.java.net/java-se-ri/11
#### Spring
Spring Cloud官网https://spring.io/projects/spring-cloud
Spring Cloud Alibaba GitHub repohttps://github.com/alibaba/spring-cloud-alibaba
Spring initializrhttps://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 REPOSITORYhttps://mvnrepository.com/
#### Nacos
Quick Starthttps://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 Vuehttps://www.antdv.com/docs/vue/introduce
### 小程序端
#### Taro
Tarohttps://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