From 81198b24bbbfb9afb1571cb5527d03a08e0c04fa Mon Sep 17 00:00:00 2001 From: pxqbzjk5c <1499856873@qq.com> Date: Thu, 28 Aug 2025 20:53:28 +0800 Subject: [PATCH] ADD file via upload --- ArchitectureDesign | 72 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 ArchitectureDesign diff --git a/ArchitectureDesign b/ArchitectureDesign new file mode 100644 index 0000000..7e89771 --- /dev/null +++ b/ArchitectureDesign @@ -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与校验; +- 可在安全层引入基于角色的访问控制; +- 可为各模块添加审计日志与操作记录。 + +