# jiananyou/leavemanager architecture

> Architecture diagram of the GitHub repository jiananyou/leavemanager, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/jiananyou/leavemanager
- Repository: https://github.com/jiananyou/leavemanager

## Overview

leave-manager is a role-based leave-management backend, with a Vue/Axios frontend documented in the README. Its main workflow is student leave submission, tutor review, then education-office approval or refusal; approved requests can be routed to teachers for notification. Users also query leave status and history, while the education office can inspect statistics and import tutor records. The sampled controllers and services show request handling and service delegation; mapper persistence is supported by the project’s MyBatis setup, but the mapper-to-database wiring was not sampled, so that relationship is marked unverified.

Main entry points: [`src/com/hziee/controller/LoginController.java`](https://github.com/jiananyou/leavemanager/blob/master/src/com/hziee/controller/LoginController.java) (Login API), [`src/com/hziee/controller/EduController.java`](https://github.com/jiananyou/leavemanager/blob/master/src/com/hziee/controller/EduController.java) (Education API), [`src/com/hziee/service/EduService.java`](https://github.com/jiananyou/leavemanager/blob/master/src/com/hziee/service/EduService.java) (Education Service), [`document/leavemanager.sql`](https://github.com/jiananyou/leavemanager/blob/master/document/leavemanager.sql) (Leave Database)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["Role APIs"]
  node_login["Login API"]
  node_student_api["Student API"]
  node_tutor_api["Tutor API"]
  node_teacher_api["Teacher API"]
  node_edu_api["Education API<br/>[EduController.java]"]
end

subgraph group_workflow["Leave Workflow"]
  node_student_service["Student Service"]
  node_tutor_service["Tutor Service<br/>[TutorService.java]"]
  node_teacher_service["Teacher Service"]
  node_edu_service["Education Service<br/>[EduService.java]"]
  node_excel_import["Tutor Excel Import<br/>[ExcelUtil.java]"]
end

subgraph group_persistence["Persistence"]
  node_student_mapper["Student Mapper<br/>[StudentMapper.java]"]
  node_tutor_mapper["Tutor Mapper<br/>[TutorMapper.java]"]
  node_teacher_mapper["Teacher Mapper<br/>[TeacherMapper.java]"]
  node_edu_mapper["Education Mapper<br/>[EduMapper.java]"]
  node_database[("Leave Database<br/>[leavemanager.sql]")]
end

subgraph group_domain["Domain And Utilities"]
  node_leave_records["Leave Records"]
  node_user_records["User Records"]
  node_format_utils["Date And Encoding"]
end

node_client(("Vue/Axios Client"))

node_client -.->|"sends requests"| node_login
node_client -.->|"sends requests"| node_student_api
node_client -.->|"sends requests"| node_tutor_api
node_client -.->|"sends requests"| node_teacher_api
node_client -.->|"sends requests"| node_edu_api
node_login -->|"authenticates via"| node_student_service
node_login -->|"authenticates via"| node_tutor_service
node_login -->|"authenticates via"| node_teacher_service
node_login -->|"authenticates via"| node_edu_service
node_student_api -->|"delegates to"| node_student_service
node_student_api -->|"formats dates"| node_format_utils
node_tutor_api -->|"delegates to"| node_tutor_service
node_teacher_api -->|"delegates to"| node_teacher_service
node_edu_api -->|"delegates to"| node_edu_service
node_edu_api -->|"formats dates"| node_format_utils
node_edu_api -->|"reads uploaded sheet"| node_excel_import
node_student_service -->|"calls"| node_student_mapper
node_tutor_service -->|"calls"| node_tutor_mapper
node_teacher_service -->|"calls"| node_teacher_mapper
node_edu_service -->|"calls"| node_edu_mapper
node_student_mapper -.->|"persists and queries"| node_database
node_tutor_mapper -.->|"persists and queries"| node_database
node_teacher_mapper -.->|"persists and queries"| node_database
node_edu_mapper -.->|"persists and queries"| node_database
node_edu_api -->|"imports tutors"| node_edu_service

click node_login "https://github.com/jiananyou/leavemanager/blob/master/src/com/hziee/controller/LoginController.java"
click node_student_api "https://github.com/jiananyou/leavemanager/blob/master/src/com/hziee/controller/StudentController.java"
click node_tutor_api "https://github.com/jiananyou/leavemanager/blob/master/src/com/hziee/controller/TutorController.java"
click node_teacher_api "https://github.com/jiananyou/leavemanager/blob/master/src/com/hziee/controller/TeacherController.java"
click node_edu_api "https://github.com/jiananyou/leavemanager/blob/master/src/com/hziee/controller/EduController.java"
click node_student_service "https://github.com/jiananyou/leavemanager/blob/master/src/com/hziee/service/StudentService.java"
click node_tutor_service "https://github.com/jiananyou/leavemanager/blob/master/src/com/hziee/service/TutorService.java"
click node_teacher_service "https://github.com/jiananyou/leavemanager/blob/master/src/com/hziee/service/TeacherService.java"
click node_edu_service "https://github.com/jiananyou/leavemanager/blob/master/src/com/hziee/service/EduService.java"
click node_leave_records "https://github.com/jiananyou/leavemanager/tree/master/src/com/hziee/po"
click node_user_records "https://github.com/jiananyou/leavemanager/tree/master/src/com/hziee/po"
click node_format_utils "https://github.com/jiananyou/leavemanager/tree/master/src/com/hziee/util"
click node_student_mapper "https://github.com/jiananyou/leavemanager/blob/master/src/com/hziee/mapper/StudentMapper.java"
click node_tutor_mapper "https://github.com/jiananyou/leavemanager/blob/master/src/com/hziee/mapper/TutorMapper.java"
click node_teacher_mapper "https://github.com/jiananyou/leavemanager/blob/master/src/com/hziee/mapper/TeacherMapper.java"
click node_edu_mapper "https://github.com/jiananyou/leavemanager/blob/master/src/com/hziee/mapper/EduMapper.java"
click node_database "https://github.com/jiananyou/leavemanager/blob/master/document/leavemanager.sql"
click node_excel_import "https://github.com/jiananyou/leavemanager/blob/master/src/com/hziee/util/ExcelUtil.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_login,node_student_api,node_tutor_api,node_teacher_api,node_edu_api,node_client toneBlue
class node_student_service,node_tutor_service,node_teacher_service,node_edu_service,node_excel_import toneAmber
class node_student_mapper,node_tutor_mapper,node_teacher_mapper,node_edu_mapper,node_database toneMint
class node_leave_records,node_user_records,node_format_utils toneRose
```

## Components

### Role APIs

- [Login API](https://github.com/jiananyou/leavemanager/blob/master/src/com/hziee/controller/LoginController.java): `src/com/hziee/controller/LoginController.java`
- [Student API](https://github.com/jiananyou/leavemanager/blob/master/src/com/hziee/controller/StudentController.java): `src/com/hziee/controller/StudentController.java`
- [Tutor API](https://github.com/jiananyou/leavemanager/blob/master/src/com/hziee/controller/TutorController.java): `src/com/hziee/controller/TutorController.java`
- [Teacher API](https://github.com/jiananyou/leavemanager/blob/master/src/com/hziee/controller/TeacherController.java): `src/com/hziee/controller/TeacherController.java`
- [Education API](https://github.com/jiananyou/leavemanager/blob/master/src/com/hziee/controller/EduController.java): `src/com/hziee/controller/EduController.java`

### Leave Workflow

- [Student Service](https://github.com/jiananyou/leavemanager/blob/master/src/com/hziee/service/StudentService.java): `src/com/hziee/service/StudentService.java`
- [Tutor Service](https://github.com/jiananyou/leavemanager/blob/master/src/com/hziee/service/TutorService.java): `src/com/hziee/service/TutorService.java`
- [Teacher Service](https://github.com/jiananyou/leavemanager/blob/master/src/com/hziee/service/TeacherService.java): `src/com/hziee/service/TeacherService.java`
- [Education Service](https://github.com/jiananyou/leavemanager/blob/master/src/com/hziee/service/EduService.java): `src/com/hziee/service/EduService.java`
- [Tutor Excel Import](https://github.com/jiananyou/leavemanager/blob/master/src/com/hziee/util/ExcelUtil.java): `src/com/hziee/util/ExcelUtil.java`

### Persistence

- [Student Mapper](https://github.com/jiananyou/leavemanager/blob/master/src/com/hziee/mapper/StudentMapper.java): `src/com/hziee/mapper/StudentMapper.java`
- [Tutor Mapper](https://github.com/jiananyou/leavemanager/blob/master/src/com/hziee/mapper/TutorMapper.java): `src/com/hziee/mapper/TutorMapper.java`
- [Teacher Mapper](https://github.com/jiananyou/leavemanager/blob/master/src/com/hziee/mapper/TeacherMapper.java): `src/com/hziee/mapper/TeacherMapper.java`
- [Education Mapper](https://github.com/jiananyou/leavemanager/blob/master/src/com/hziee/mapper/EduMapper.java): `src/com/hziee/mapper/EduMapper.java`
- [Leave Database](https://github.com/jiananyou/leavemanager/blob/master/document/leavemanager.sql): `document/leavemanager.sql`

### Domain And Utilities

- [Leave Records](https://github.com/jiananyou/leavemanager/tree/master/src/com/hziee/po): `src/com/hziee/po`
- [User Records](https://github.com/jiananyou/leavemanager/tree/master/src/com/hziee/po): `src/com/hziee/po`
- [Date And Encoding](https://github.com/jiananyou/leavemanager/tree/master/src/com/hziee/util): `src/com/hziee/util`

### Other components

- **Vue/Axios Client**

## Connections

- Vue/Axios Client → Login API: sends requests (evidence: `README.md`)
- Vue/Axios Client → Student API: sends requests (evidence: `README.md`)
- Vue/Axios Client → Tutor API: sends requests (evidence: `README.md`)
- Vue/Axios Client → Teacher API: sends requests (evidence: `README.md`)
- Vue/Axios Client → Education API: sends requests (evidence: `README.md`)
- Login API → Student Service: authenticates via (evidence: `src/com/hziee/controller/LoginController.java`)
- Login API → Tutor Service: authenticates via (evidence: `src/com/hziee/controller/LoginController.java`)
- Login API → Teacher Service: authenticates via (evidence: `src/com/hziee/controller/LoginController.java`)
- Login API → Education Service: authenticates via (evidence: `src/com/hziee/controller/LoginController.java`)
- Student API → Student Service: delegates to (evidence: `src/com/hziee/controller/StudentController.java`)
- Student API → Date And Encoding: formats dates (evidence: `src/com/hziee/controller/StudentController.java`)
- Tutor API → Tutor Service: delegates to (evidence: `src/com/hziee/controller/TutorController.java`)
- Teacher API → Teacher Service: delegates to (evidence: `src/com/hziee/controller/TeacherController.java`)
- Education API → Education Service: delegates to (evidence: `src/com/hziee/controller/EduController.java`)
- Education API → Date And Encoding: formats dates (evidence: `src/com/hziee/controller/EduController.java`)
- Education API → Tutor Excel Import: reads uploaded sheet (evidence: `src/com/hziee/controller/EduController.java`)
- Student Service → Student Mapper: calls (evidence: `src/com/hziee/service/StudentService.java`)
- Tutor Service → Tutor Mapper: calls (evidence: `src/com/hziee/service/TutorService.java`)
- Teacher Service → Teacher Mapper: calls (evidence: `src/com/hziee/service/TeacherService.java`)
- Education Service → Education Mapper: calls (evidence: `src/com/hziee/service/EduService.java`)
- Student Mapper → Leave Database: persists and queries
- Tutor Mapper → Leave Database: persists and queries
- Teacher Mapper → Leave Database: persists and queries
- Education Mapper → Leave Database: persists and queries
- Education API → Education Service: imports tutors (evidence: `src/com/hziee/controller/EduController.java`)
