kindergarten_java/reading-platform-java/README.md

171 lines
5.2 KiB
Markdown
Raw Permalink Normal View History

2026-02-28 16:41:39 +08:00
# Reading Platform Java Backend
Spring Boot + MyBatis-Plus backend for the Reading Platform.
## Tech Stack
- **Java**: 17
- **Spring Boot**: 3.2.3
- **MyBatis-Plus**: 3.5.5
- **MySQL**: 8.0+
- **Spring Security + JWT**: Authentication
- **Knife4j**: API Documentation (Swagger)
- **Lombok**: Boilerplate reduction
## Project Structure
```
reading-platform-java/
├── pom.xml # Maven dependencies
├── src/main/java/com/reading/platform/
│ ├── ReadingPlatformApplication.java
│ ├── common/ # Common components
│ │ ├── config/ # Configuration classes
│ │ ├── exception/ # Exception handling
│ │ ├── response/ # Unified response
│ │ ├── security/ # JWT security
│ │ ├── annotation/ # Custom annotations
│ │ ├── enums/ # Enum classes
│ │ ├── aspect/ # AOP aspects
│ │ └── util/ # Utilities
│ ├── entity/ # Entity classes (27)
│ ├── mapper/ # MyBatis-Plus mappers (27)
│ ├── service/ # Service interfaces
│ ├── service/impl/ # Service implementations
│ ├── controller/ # REST controllers
│ │ ├── admin/ # Super admin endpoints
│ │ ├── school/ # School admin endpoints
│ │ ├── teacher/ # Teacher endpoints
│ │ └── parent/ # Parent endpoints
│ └── dto/ # Data Transfer Objects
│ ├── request/
│ └── response/
└── src/main/resources/
├── application.yml # Main configuration
├── application-dev.yml # Dev environment config
├── mapper/ # MyBatis XML files
└── db/migration/ # SQL scripts
```
## Quick Start
### 1. Prerequisites
- JDK 17+
- Maven 3.6+
- MySQL 8.0+
### 2. Database Setup
```bash
# Create database and import schema
mysql -u root -p < src/main/resources/db/migration/V1__init_schema.sql
```
### 3. Configuration
Edit `src/main/resources/application-dev.yml`:
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/reading_platform
username: your_username
password: your_password
```
### 4. Build and Run
```bash
# Build
mvn clean package -DskipTests
# Run
java -jar target/reading-platform-1.0.0.jar
# Or run with Maven
mvn spring-boot:run
```
### 5. API Documentation
After starting the application, access the API documentation at:
- Swagger UI: http://localhost:8080/swagger-ui.html
- Knife4j UI: http://localhost:8080/doc.html
## API Endpoints
### Authentication
- `POST /api/auth/login` - User login
- `GET /api/auth/me` - Get current user info
- `POST /api/auth/change-password` - Change password
### Admin Endpoints
- `/api/admin/tenants` - Tenant management
- `/api/admin/courses` - System course management
### School Endpoints
- `/api/school/teachers` - Teacher management
- `/api/school/students` - Student management
- `/api/school/classes` - Class management
- `/api/school/parents` - Parent management
- `/api/school/tasks` - Task management
- `/api/school/growth-records` - Growth record management
### Teacher Endpoints
- `/api/teacher/courses` - View courses
- `/api/teacher/lessons` - Lesson management
- `/api/teacher/tasks` - Task management
- `/api/teacher/growth-records` - Growth record management
- `/api/teacher/notifications` - Notifications
### Parent Endpoints
- `/api/parent/children` - Child information
- `/api/parent/tasks` - View and complete tasks
- `/api/parent/growth-records` - Growth record management
- `/api/parent/notifications` - Notifications
## Test Accounts
| Role | Username | Password |
|------|----------|----------|
| Admin | admin | admin123 |
School, teacher, and parent accounts need to be created through the admin interface.
## Database Tables (27)
| Module | Tables |
|--------|--------|
| Tenant | tenants, tenant_courses |
| Users | admin_users, teachers, students, parents, parent_students |
| Class | classes, class_teachers, student_class_history |
| Course | courses, course_versions, course_resources, course_scripts, course_script_pages, course_activities |
| Lesson | lessons, lesson_feedbacks, student_records |
| Task | tasks, task_targets, task_completions, task_templates |
| Growth | growth_records |
| Resource | resource_libraries, resource_items |
| Schedule | schedule_plans, schedule_templates |
| System | system_settings, notifications, operation_logs, tags |
## Development
### Adding a New Entity
1. Create entity class in `entity/`
2. Create mapper interface in `mapper/`
3. Create service interface in `service/`
4. Create service implementation in `service/impl/`
5. Create controller in appropriate `controller/` subdirectory
### Code Style
- Use Lombok annotations to reduce boilerplate
- Follow Spring Boot conventions
- Use `@RequireRole` annotation for role-based access control
## License
MIT License