|
|
@@ -1,31 +1,51 @@ |
|
|
# 北京维康慈善基金会官网 |
|
|
|
|
|
|
|
|
# 肠愈同行患者关爱 - 后端服务 |
|
|
|
|
|
|
|
|
基于 ThinkJS 3.x 的慈善基金会官网系统,包含前台展示和后台管理。 |
|
|
|
|
|
|
|
|
肠愈同行患者关爱项目后端,提供管理后台和小程序 API 接口。基于 ThinkJS 3.x 开发。 |
|
|
|
|
|
|
|
|
## 技术栈 |
|
|
## 技术栈 |
|
|
|
|
|
|
|
|
- **后端**: ThinkJS 3.x + MySQL + Redis |
|
|
|
|
|
- **前台**: Nunjucks模板 + Swiper.js + 原生CSS |
|
|
|
|
|
- **后台**: Vue 3 + Element Plus + Tailwind CSS |
|
|
|
|
|
- **认证**: JWT Token |
|
|
|
|
|
|
|
|
- ThinkJS 3.x (Node.js) + Nunjucks 模板 |
|
|
|
|
|
- MySQL (腾讯云 CynosDB),数据库:`pap_cytx` |
|
|
|
|
|
- Redis 缓存(端口 6319) |
|
|
|
|
|
- 腾讯云 COS 文件存储 |
|
|
|
|
|
- 腾讯云 OCR / 人脸核身 / 短信 |
|
|
|
|
|
- Puppeteer(协议签署截图) |
|
|
|
|
|
- PM2 进程管理,端口 8361 |
|
|
|
|
|
|
|
|
## 功能模块 |
|
|
## 功能模块 |
|
|
|
|
|
|
|
|
### 前台 |
|
|
|
|
|
- 首页全屏滚动(Swiper Fullpage) |
|
|
|
|
|
- Banner轮播(支持毛玻璃效果) |
|
|
|
|
|
- 捐赠数据公示(统计卡片 + 滚动明细) |
|
|
|
|
|
- 公益项目展示(Tab切换 + 背景联动) |
|
|
|
|
|
- 新闻动态 |
|
|
|
|
|
- 合作伙伴 |
|
|
|
|
|
- 响应式适配(移动端汉堡菜单) |
|
|
|
|
|
|
|
|
|
|
|
### 后台管理 |
|
|
|
|
|
- 用户/角色管理 |
|
|
|
|
|
- 栏目管理(树形结构) |
|
|
|
|
|
- 内容类型:Banner、图文、文字列表、图片、单页、人员、岗位、捐赠收支 |
|
|
|
|
|
- 网站配置 |
|
|
|
|
|
- 药品援助数据管理 |
|
|
|
|
|
|
|
|
### 管理后台 |
|
|
|
|
|
- 控制台:统计卡片、趋势图、最近记录 |
|
|
|
|
|
- 患者管理:列表/详情/审核/导出,按瘤种/地区/状态筛选 |
|
|
|
|
|
- 内容管理:首页内容配置 |
|
|
|
|
|
- 系统管理:用户、角色权限、操作日志、短信记录、文件上传 |
|
|
|
|
|
|
|
|
|
|
|
### 小程序 API |
|
|
|
|
|
- 微信登录 / 手机号绑定 / 修改手机号 |
|
|
|
|
|
- 实名认证(OCR + 人脸核身 + 短信验证) |
|
|
|
|
|
- 患者资料提交与编辑 |
|
|
|
|
|
- 协议签署(Puppeteer 截图生成) |
|
|
|
|
|
- 消息中心 |
|
|
|
|
|
- 订阅消息通知(审核结果推送) |
|
|
|
|
|
- 头像上传 |
|
|
|
|
|
|
|
|
|
|
|
## 目录结构 |
|
|
|
|
|
|
|
|
|
|
|
``` |
|
|
|
|
|
├── src/ |
|
|
|
|
|
│ ├── config/ # 配置(adapter/router/middleware/cos/ocr/sms/faceid) |
|
|
|
|
|
│ ├── controller/ |
|
|
|
|
|
│ │ ├── admin/ # 后台管理(dashboard/patient/content/auth/upload) |
|
|
|
|
|
│ │ │ └── system/ # 系统管理(user/role/log/sms) |
|
|
|
|
|
│ │ ├── base.js # 基础控制器(JWT认证/权限/日志/短信) |
|
|
|
|
|
│ │ ├── common.js # 公共接口(地区数据) |
|
|
|
|
|
│ │ └── mp.js # 小程序 API |
|
|
|
|
|
│ ├── model/ # 数据模型 |
|
|
|
|
|
│ └── service/ # 服务层(wechat/screenshot) |
|
|
|
|
|
├── view/admin/ # 后台 Nunjucks 模板 |
|
|
|
|
|
├── www/static/ # 静态资源 |
|
|
|
|
|
└── sql/ # 数据库脚本 |
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
## 快速开始 |
|
|
## 快速开始 |
|
|
|
|
|
|
|
|
@@ -34,34 +54,29 @@ |
|
|
pnpm install |
|
|
pnpm install |
|
|
|
|
|
|
|
|
# 开发环境 |
|
|
# 开发环境 |
|
|
pnpm start |
|
|
|
|
|
|
|
|
npm start |
|
|
|
|
|
|
|
|
# 生产环境 |
|
|
|
|
|
node production.js |
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
## 目录结构 |
|
|
|
|
|
|
|
|
# ESLint 修复 |
|
|
|
|
|
npm run lint-fix |
|
|
|
|
|
|
|
|
``` |
|
|
|
|
|
├── src/ |
|
|
|
|
|
│ ├── controller/ # 控制器 |
|
|
|
|
|
│ ├── model/ # 数据模型 |
|
|
|
|
|
│ ├── config/ # 配置文件 |
|
|
|
|
|
│ └── logic/ # 逻辑层 |
|
|
|
|
|
├── view/ |
|
|
|
|
|
│ ├── admin/ # 后台视图 |
|
|
|
|
|
│ ├── common/ # 前台公共组件 |
|
|
|
|
|
│ ├── layout.html # 前台布局 |
|
|
|
|
|
│ └── index_index.html # 首页 |
|
|
|
|
|
├── www/static/ # 静态资源 |
|
|
|
|
|
└── sql/ # 数据库脚本 |
|
|
|
|
|
|
|
|
# 生产部署 |
|
|
|
|
|
pm2 startOrReload pm2.json |
|
|
``` |
|
|
``` |
|
|
|
|
|
|
|
|
## 数据库 |
|
|
## 数据库 |
|
|
|
|
|
|
|
|
执行 `sql/` 目录下的SQL脚本初始化数据库。 |
|
|
|
|
|
|
|
|
按顺序执行 `sql/` 目录下的脚本: |
|
|
|
|
|
|
|
|
|
|
|
1. `init.sql` - 基础表(用户/角色/患者/内容等) |
|
|
|
|
|
2. `wechat_user.sql` - 微信用户表 |
|
|
|
|
|
3. `verify.sql` - 实名认证相关字段 |
|
|
|
|
|
4. `myinfo.sql` - 患者资料扩展字段 |
|
|
|
|
|
5. `sign.sql` - 协议签署字段 |
|
|
|
|
|
6. `content.sql` - 内容数据 |
|
|
|
|
|
7. `message.sql` - 消息表 |
|
|
|
|
|
8. `subscribe.sql` - 订阅消息记录表 |
|
|
|
|
|
|
|
|
## 访问地址 |
|
|
## 访问地址 |
|
|
|
|
|
|
|
|
- 前台: http://localhost:8360/ |
|
|
|
|
|
- 后台: http://localhost:8360/admin/login.html |
|
|
|
|
|
|
|
|
- 后台管理:http://localhost:8361/admin/dashboard.html |
|
|
|
|
|
- 小程序 API:http://localhost:8361/mp/* |