软件体系结构设计报告(总体设计) 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与校验; - 可在安全层引入基于角色的访问控制; - 可为各模块添加审计日志与操作记录。