|
|
|
@ -0,0 +1,72 @@
|
|
|
|
|
软件体系结构设计报告(总体设计)
|
|
|
|
|
|
|
|
|
|
1. 概述
|
|
|
|
|
本报告描述ECMS系统的总体架构与关键设计决策,严格对应当前代码实现。系统采用前后端分离架构:后端Spring Boot提供REST接口,前端Vue提供界面与路由导航。
|
|
|
|
|
|
|
|
|
|
2. 架构概览
|
|
|
|
|
- 分层:
|
|
|
|
|
- 接口层(Controller):`com.prj.controller.*`,提供REST接口、分页与统一结果包装;
|
|
|
|
|
- 业务层(Service):`com.prj.service.*` 与 `impl`,封装业务逻辑与事务;
|
|
|
|
|
- 数据访问层(Mapper/Repo):`com.prj.mapper.*`(MyBatis)与 `com.prj.repo.*`(JPA/Redis);
|
|
|
|
|
- 领域模型:`com.prj.domain.*`;
|
|
|
|
|
- 框架与配置:`com.prj.framework.*`、`com.prj.common.*`;
|
|
|
|
|
- 前端:
|
|
|
|
|
- 路由:`src/router/index.js`;
|
|
|
|
|
- API:`src/api/*.js` 通过 `@/utils/request` 调用后端;
|
|
|
|
|
- 状态:`src/store`;
|
|
|
|
|
|
|
|
|
|
3. 模块划分与依赖
|
|
|
|
|
- 用户与安全:`LoginController`、`CaptchaController`、`framework.security` 与 `framework.web.service.LoginService`;
|
|
|
|
|
- 部门管理:`DeptController` ↔ `IDeptService` ↔ `DeptMapper.xml` ↔ `Dept`;
|
|
|
|
|
- 员工管理:`EmployeeController` ↔ `IEmployeeService` ↔ `EmployeeMapper.xml` ↔ `Employee`;
|
|
|
|
|
- 员工评价:`EmployeeKpiController` ↔ `IEmployeeKpiService` ↔ `EmployeeKpiMapper.xml` ↔ `EmployeeKpi`;
|
|
|
|
|
- 招人名额:`HireNumController` ↔ `IHireNumService` ↔ `HirenumRepo`/`HireNumMapper.xml` ↔ `HireNum`(实体带JPA注解);
|
|
|
|
|
- 薪资标准:`SalaryLevelController` ↔ `ISalaryLevelService` ↔ `SalaryLevelMapper.xml` ↔ `SalaryLevel`;
|
|
|
|
|
- 缓存:`RedisCache` 用于验证码;
|
|
|
|
|
|
|
|
|
|
4. 关键设计
|
|
|
|
|
4.1 统一返回与分页
|
|
|
|
|
- `AjaxResult` 统一返回格式;
|
|
|
|
|
- `BaseController` 提供 `startPage()` 与 `getDataByPage()`,确保各列表接口一致的分页行为。
|
|
|
|
|
|
|
|
|
|
4.2 事务
|
|
|
|
|
- `EmployeeController#edit` 使用 `@Transactional` 保证更新一致性;其他事务由服务层按需控制。
|
|
|
|
|
|
|
|
|
|
4.3 数据持久化
|
|
|
|
|
- 以MyBatis XML为主(见 `resources/mapper/*.xml`),`HireNum` 同时具备JPA实体注解并通过 `HirenumRepo` 使用;
|
|
|
|
|
- 领域模型简洁,字段即数据库列的直接映射;
|
|
|
|
|
|
|
|
|
|
4.4 安全与会话
|
|
|
|
|
- 登录流程:验证码生成与Redis校验 → `LoginService.login` 签发 `token`;
|
|
|
|
|
- 前端拦截器自动在请求头附加 `Authorization`;401时触发登出与跳转。
|
|
|
|
|
|
|
|
|
|
4.5 前端结构
|
|
|
|
|
- 路由按照模块分组(部门/员工/评价/招聘名额/薪资标准)与首页、登录;
|
|
|
|
|
- API封装统一超时、错误码处理与消息提示;
|
|
|
|
|
|
|
|
|
|
5. 接口与数据流
|
|
|
|
|
- 前端页面触发 API 请求 → `@/utils/request` 注入 `Authorization` → 后端Controller → Service → Mapper/Repo → 数据库/缓存 → 结果包装返回。
|
|
|
|
|
|
|
|
|
|
6. 日志与监控
|
|
|
|
|
- 使用 `logback.xml` 配置日志;生产环境可扩展接入APM或集中式日志(当前代码未包含)。
|
|
|
|
|
|
|
|
|
|
7. 配置与环境
|
|
|
|
|
- 后端配置:`src/main/resources/application.yml`;
|
|
|
|
|
- 数据源/Redis等依赖通过Spring配置加载(当前文件中可见Redis用于验证码)。
|
|
|
|
|
|
|
|
|
|
8. 集成测试计划(概要)
|
|
|
|
|
- 鉴权链路联调:`/captchaImage` → `/login` → 携带 `Authorization` 调用任一CRUD接口,验证401/200分支;
|
|
|
|
|
- 各模块CRUD链路:前端各页面操作对应API,验证分页、详情、创建、更新、删除端到端行为;
|
|
|
|
|
- 事务验证:并发/异常场景下 `PUT /employee` 数据一致性;
|
|
|
|
|
|
|
|
|
|
9. 部署与分支规范
|
|
|
|
|
- 主分支 `main`,目录结构 `doc/` 与 `src/`;
|
|
|
|
|
- 开发者以个人分支开发,提交合并请求以便指导老师审阅参与度;
|
|
|
|
|
- Windows 开发环境,前端、后端分别启动;
|
|
|
|
|
|
|
|
|
|
10. 演进与扩展性
|
|
|
|
|
- 可在Service层引入DTO与校验;
|
|
|
|
|
- 可在安全层引入基于角色的访问控制;
|
|
|
|
|
- 可为各模块添加审计日志与操作记录。
|
|
|
|
|
|
|
|
|
|
|