blog/articles/02-source-delivery-java-vue3.md · Xinze/机构养老云平台 - Gitee.com
技术架构(可审计)
3.1 技术选型
| 层级 | 选型 | 说明 |
|---|---|---|
| 语言 / 运行时 | Java 8 | 兼容主流政企服务器环境 |
| 后端框架 | Spring Boot 2.7 | 稳定 LTS,便于长期维护 |
| ORM | MyBatis Plus | 逻辑删除、多租户拦截、代码生成 |
| 缓存 | Redis | Token、菜单权限、会话与热点数据 |
| 前端 | Vue 3 + TypeScript + Element Plus + Vite | 管理端 SPA,组件化 care 业务页 |
| 数据库 | MySQL 5.7+ / 8.0 | 库名示例:older-care-platform |
| 文档 | Swagger / Knife4j | /admin-api 下自动生成接口文档 |
| 任务调度 | Quartz | 月账单生成、日扣费等定时任务 |
| 工作流(可选) | Flowable BPM | 复杂审批可扩展 BPMN |
3.2 后端模块划分
zhijian-server/ # 启动容器,聚合各 module
zhijian-module-system/ # 用户、角色、菜单、租户、字典、OAuth2
zhijian-module-infra/ # 文件、配置、日志、代码生成、定时任务
zhijian-module-care/ # ★ 机构康养 + 系统中台 hub 业务
zhijian-module-iot/ # IoT 产品/设备(精简底座,中台菜单接入)
zhijian-module-care 按领域分包,典型结构:
controller/admin/{older|checkin|bed|contract|account|assess|careplan|...}/
service/{领域}/
dal/dataobject/ + dal/mysql/
REST 路径统一前缀 /admin-api/care/**,例如:
/admin-api/care/older/page--- 档案分页/admin-api/care/checkin/get--- 入住详情/admin-api/care/account/recharge--- 账户充值
接口返回统一 CommonResult<T>;业务异常使用模块错误码段(zhijian-module-care/.../ErrorCodeConstants.java)。
3.3 前端结构
zhijian-ui/zhijian-ui-admin-vue3/
├── src/api/care/ # 按模块拆分的 API 封装
├── src/views/care/ # 业务页面(checkin/flow、assess、account...)
├── src/router/ # 动态菜单路由(后端权限驱动)
└── src/store/ # 用户、权限、字典
入住 flow 采用 flow.vue + 各 Panel 组件 (AssessPanel、CostPanel 等),与旧系统高保真对齐,便于机构用户零培训上手。
3.4 多租户 SaaS
- 业务表含
tenant_id;MyBatis Plus 租户拦截器自动追加条件; - 请求头
tenant-id与登录租户绑定; - 支持租户套餐控制菜单可见范围(社区版 profile 仅开放子集菜单);
- 集团场景:顶级管理员建机构 → 分配套餐 → 机构管理员建账号。
3.5 安全与权限
- Spring Security + Redis Token,无状态会话;
- 菜单 + 按钮级
@PreAuthorize权限码,与数据库system_menu同步; - 登录日志 / 操作日志 / API 访问日志,支持 IP 归属地;
- 可选 API 请求体 AES 加密(生产可开关)。
3.6 数据设计原则(康养表)
- 业务表前缀
care_*(如care_older、care_checkin、care_bed、care_contract); - 逻辑删除 (
deleted),不做物理删行; - 康养业务表不设数据库唯一键与外键 ,唯一性与关联完整性在 Service 层校验(便于软删重开、演示刷数、跨模块演进);
- 在住状态进
care_checkin,不在care_older上堆bed_id,避免历史入住污染主档。