ADD file via upload

冉杨品飞
pxqbzjk5c 1 month ago
parent 44505a49ac
commit 15d95a17ad

@ -0,0 +1,107 @@
软件详细设计报告(详细设计)
1. 总体说明
本报告基于当前代码实现,细化至类/接口、方法职责、数据流与异常处理,覆盖后端各模块与前端关键交互点。
2. 后端详细设计
2.1 统一基础设施
- `com.prj.common.core.controller.BaseController`
- `startPage()`:开启分页(集成 MyBatis PageHelper
- `getDataByPage(List)`:封装为 `TableDataInfo`
- `toAjax(int rows)`:封装影响行数到 `AjaxResult`
- `AjaxResult`:统一返回结构 `{ code, msg, data }`
2.2 鉴权与验证码
- `CaptchaController`
- 依赖:`captchaProducerMath`、`RedisCache`
- 主要流程:生成运算验证码 → Redis存储(键:`Constants.CAPTCHA_CODE_KEY + uuid`) → Base64图片返回
- 异常:`ImageIO.write` 抛出 `IOException` 时,返回 `AjaxResult.error(msg)`
- `LoginController`
- 依赖:`LoginService`
- 主要流程:校验验证码 → 账号认证 → 生成 `token` → 返回 `Constants.TOKEN` 字段
2.3 部门信息管理
- `DeptController`
- `GET /dept_info/list``startPage()` → `IDeptService.selectDeptList(Dept)` → `getDataByPage(list)`
- `GET /dept_info/{id}``IDeptService.selectDeptById(id)`
- `POST /dept_info``IDeptService.insertDept(Dept)` → `toAjax(rows)`
- `PUT /dept_info``IDeptService.updateDept(Dept)` → `toAjax(rows)`
- `DELETE /dept_info/{ids}``IDeptService.deleteDeptByIds(Long[])` → `toAjax(rows)`
- Service 与持久化
- `IDeptService`/impl参数校验与 CRUD 组合;
- `DeptMapper.xml`:对应 SQL与实体字段一致
2.4 员工信息管理
- `EmployeeController`
- 同 Dept 接口集合;
- `PUT /employee``@Transactional(timeout=20, readOnly=false, isolation=DEFAULT, propagation=REQUIRED)`
- 设计目的:保证更新过程中的一致性,可在方法内扩展多表写操作;
- Service 与持久化
- `IEmployeeService`/impl` + `EmployeeMapper.xml`
2.5 员工评价管理
- `EmployeeKpiController` + `IEmployeeKpiService` + `EmployeeKpiMapper.xml`
- 五个CRUD端点同上模式
2.6 招人名额管理
- `HireNumController` + `IHireNumService` + `HirenumRepo`/`HireNumMapper.xml`
- 实体 `HireNum` 使用 JPA 注解(`@Entity @Table(name="hire_num")`),字段 `id/dept/num/endtime`
2.7 薪资标准管理
- `SalaryLevelController` + `ISalaryLevelService` + `SalaryLevelMapper.xml`
2.8 领域模型
- `Dept{id, name, manager, reportto}`
- `Employee{id, dept, name, position, salary}`
- `EmployeeKpi{id, kpi, bonus, manager}`
- `HireNum{id, dept, num, endtime}`
- `SalaryLevel{id, jobType, salary, salaryrange}`
2.9 异常与错误处理
- 控制器返回 `AjaxResult.error(msg)` 或 `code!=200`
- 登录401由前端捕获并触发重新登录
3. 前端详细设计
3.1 路由
- `src/router/index.js`
- `/index` 首页;
- 业务模块:`/dept_info`、`/salary_level`、`/hirenum`、`/employee`、`/employee_kpi`
- `/login` 登录页;
3.2 请求封装
- `src/utils/request.js`
- Request 拦截器:若存在 `Admin-Token`,注入 `Authorization: Bearer <token>`
- Response 拦截器:基于 `code` 统一处理 401/500/非200 异常;
- `timeout=2000ms``baseURL=VUE_APP_BASE_API`
- `src/utils/auth.js`:基于 Cookie 管理 `Admin-Token`
3.3 API 模块
- `src/api/*.js` 与后端控制器一一对应URL 完全匹配),方法:`list/get/add/update/del`
4. 典型时序(文本)
4.1 登录
用户 → `/captchaImage` → 返回 `uuid,img`;用户提交 `/login{username,password,code,uuid}` → 返回 `token`;前端保存 Cookie 并携带到后续请求。
4.2 列表分页
页面 → 调用 `list` APIquery→实体字段映射→ Controller `startPage()` → Service/Mapper 查询 → `TableDataInfo` 返回。
4.3 更新(员工示例)
页面 → `PUT /employee` → Controller事务→ Service → Mapper/JPA → 受影响行数 → `AjaxResult`。
5. 数据校验与约束
- 控制器层假定实体字段按类型传入;
- 业务层可扩展非空、范围、唯一性校验(当前代码未显式实现高级校验规则)。
6. 配置要点
- `application.yml`:数据源/端口/Redis等
- `logback.xml`:日志级别与输出;
7. 安全与权限
- 以 Token 作为会话凭证;未实现细粒度 RBAC 的控制器级别权限;
8. 扩展点
- 在Service引入DTO与校验框架
- 统一异常处理与错误码枚举;
- 审计日志与操作记录;
Loading…
Cancel
Save