# zhuangyuan-java
**Repository Path**: shisenlin/zhuangyuan-java
## Basic Information
- **Project Name**: zhuangyuan-java
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-06-20
- **Last Updated**: 2026-06-28
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ๐ ๅฐ็ถๅ
- ๅฎถๅบญๆบ่ฝๅบ้ขๆนๆน็ณป็ป๏ผๅ็ซฏ๏ผ
> ไธๆฌพ้ขๅๅฎถๅบญ็ๆบ่ฝๆฐๅญฆๅบ้ขไธๆนๆน็ณป็ปๅ็ซฏ๏ผๆฏๆๆๅนด็บง่ชๅจ็ๆๆฐๅญฆ้ขใ่ชๅจๆนๆนใ็งฏๅๅฅๅฑใ้้ขๆฌใ็งฏๅๅๅ็ญๅ่ฝใ
---
## ๐ ็ฎๅฝ
- [ๅ่ฝ็นๆง](#-ๅ่ฝ็นๆง)
- [ๆๆฏๆถๆ](#-ๆๆฏๆถๆ)
- [้กน็ฎ็ปๆ](#-้กน็ฎ็ปๆ)
- [็ฏๅข่ฆๆฑ](#-็ฏๅข่ฆๆฑ)
- [ไพ่ตไธ่ฝฝไธๅฝๅ
้ๅ้
็ฝฎ](#-ไพ่ตไธ่ฝฝไธๅฝๅ
้ๅ้
็ฝฎ)
- [ๅฟซ้ๅฏๅจ](#-ๅฟซ้ๅฏๅจ)
- [Docker ้จ็ฝฒ](#-docker-้จ็ฝฒ)
- [API ๆฅๅฃๆๆกฃ](#-api-ๆฅๅฃๆๆกฃ)
- [ๆฐๆฎๅบ่ฎพ่ฎก](#-ๆฐๆฎๅบ่ฎพ่ฎก)
- [้
็ฝฎ่ฏดๆ](#-้
็ฝฎ่ฏดๆ)
- [ๅธธ่ง้ฎ้ข](#-ๅธธ่ง้ฎ้ข)
---
## โจ ๅ่ฝ็นๆง
### ๐ ็จๆท่ฎค่ฏ
- ๅฎถ้ฟๆณจๅ / ็ปๅฝ๏ผ็จๆทๅ + ๅฏ็ ๏ผ
- JWT Token ๆ ็ถๆ้ดๆ
- BCrypt ๅฏ็ ๅ ๅฏๅญๅจ
- ่ง่ฒๅบๅ๏ผๅฎถ้ฟ๏ผPARENT๏ผ/ ๅญฉๅญ๏ผCHILD๏ผ
### ๐ถ ๅญฉๅญ็ฎก็
- ๆทปๅ ๅคไธชๅญฉๅญ๏ผ่ฎพ็ฝฎๅงๅใๅนด้พใๅนด็บง
- ๆฏๆ Emoji ๅคดๅ้ๆฉ
- 7 ็งไธป้ข้ฃๆ ผๅๆข๏ผๅญฆ้ข้ฃใๅบๆด็ฑณใๅชๅใๅ
ฌไธปใๅฐ้ชๅฅ็ผใ่ช็ถใๅคช็ฉบ๏ผ
- ไธป้ข้
็ฝฎๆไน
ๅๅญๅจ
### ๐ ๆบ่ฝๅบ้ข
- **ๆๅนด็บง่ชๅจ็ๆ**๏ผ่ฆ็ไธๅนด็บงๅฐๅๅนด็บง็ฅ่ฏ็น
- **้ขๅไธฐๅฏ**๏ผๅ ๆณใๅๆณใไนๆณใ้คๆณใๆททๅ่ฟ็ฎใๆฌๅท่ฟ็ฎใ็พๅๆฐ
- **็ปไน ๆจกๅผ**๏ผ่ช้้ข้๏ผ้ๆถ็ปไน
- **ๆญฃๅผ่่ฏ**๏ผA4 ๆญฃๅ้ขๅ
ฑ 42 ้ข๏ผๅ 25 ้ข + ๅ 17 ้ข๏ผ๏ผๆจกๆ็ๅฎ่่ฏ
### โ
่ชๅจๆนๆน
- ๆไบค็ญๆกๅๅณๆถๆนๆน
- ้้ขๆพ็คบๆญฃ็กฎ็ญๆกไธๅฏน้
- ๆ็ฅ่ฏ็นๅฝ็ฑป้้ข
### ๐ ็งฏๅ็ณป็ป
- ๆญฃๅผ่่ฏๆ นๆฎๅพๅๅฅๅฑ็งฏๅ๏ผๆปกๅ 10 ๅ๏ผโฅ90 ๅ 8 ๅ๏ผโฅ80 ๅ 6 ๅ๏ผโฅ70 ๅ 4 ๅ๏ผโฅ60 ๅ 2 ๅ๏ผ
- ็งฏๅๅๅฒ่ฎฐๅฝ่ฟฝ่ธช
- ็ปไน ๆจกๅผไธ่ฎก็งฏๅ
### ๐ ้้ขๆฌ
- ่ชๅจ่ฎฐๅฝๆๆ้้ข
- ๆ็ฅ่ฏ็น็ป่ฎก้้ขๅๅธ
- ๆฏๆ้้ขๅผบๅ็ปไน
### ๐ ็งฏๅๅๅ
- ๅฎถ้ฟๆทปๅ / ็ฎก็็คผๅ๏ผๅ็งฐใไปทๆ ผใๅพๆ ใๅบๅญ๏ผ
- ๅญฉๅญ็จ็งฏๅๅ
ๆข็คผๅ
- ๅฎถ้ฟๅฎกๆนๆต็จ๏ผๅพ
ๅฎกๆน โ ้่ฟ / ๆ็ป๏ผ
- ๆ็ป่ชๅจ้่ฟ็งฏๅ
---
## ๐ ๆๆฏๆถๆ
```
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Flutter App โ
โ (Android / iOS / Web) โ
โโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ HTTP / REST API
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Spring Boot Application โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Security Layer (JWT) โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ Controller Layer โ โ โ
โ โ โ AuthController ChildController โ โ โ
โ โ โ ExamController GiftController โ โ โ
โ โ โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โผ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ Service Layer โ โ โ
โ โ โ AuthService ExamService GiftService โ โ โ
โ โ โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โผ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ Repository Layer (JPA) โ โ โ
โ โ โ User Child Question ExamRecord โ โ โ
โ โ โ WrongQuestion Gift RedeemRecord โ โ โ
โ โ โ PointsHistory โ โ โ
โ โ โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Database โ
โ H2 (ๅผๅ) / PostgreSQL โ
โ (็ไบง) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโ
```
### ๆๆฏๆ
| ็ปไปถ | ๆๆฏ | ็ๆฌ | ่ฏดๆ |
|------|------|------|------|
| ๆกๆถ | Spring Boot | 3.2.5 | ๅบ็จๆกๆถ |
| ่ฏญ่จ | Java | 17 | LTS ็ๆฌ |
| ORM | Spring Data JPA + Hibernate | 6.4.4 | ๆฐๆฎๆไน
ๅ |
| ๅฎๅ
จ | Spring Security + JWT | 6.2.4 / 0.12.5 | ่ฎค่ฏ้ดๆ |
| ๆฐๆฎๅบ | H2 / PostgreSQL | 2.2.224 / 15 | ๅผๅ / ็ไบง |
| ๅทฅๅ
ท | Lombok | ๅ
็ฝฎ | ็ฎๅไปฃ็ |
| ๆ ๅฐ | ModelMapper | 3.1.1 | DTO ่ฝฌๆข |
| ๅฎนๅจ | Docker + Docker Compose | - | ๅฎนๅจๅ้จ็ฝฒ |
---
## ๐ ้กน็ฎ็ปๆ
```
zhuangyuan-java/
โโโ src/main/java/com/zhuangyuan/
โ โโโ ZhuangYuanApplication.java # ๅฏๅจ็ฑป
โ โโโ config/
โ โ โโโ SecurityConfig.java # Spring Security + JWT ่ฟๆปคๅจ้
็ฝฎ
โ โ โโโ JwtUtil.java # JWT ๅทฅๅ
ท็ฑป๏ผ็ๆ/่งฃๆ/้ช่ฏ๏ผ
โ โ โโโ GlobalExceptionHandler.java # ๅ
จๅฑๅผๅธธๅค็ๅจ
โ โโโ controller/
โ โ โโโ AuthController.java # ่ฎค่ฏๆฅๅฃ๏ผๆณจๅ/็ปๅฝ๏ผ
โ โ โโโ ChildController.java # ๅญฉๅญ็ฎก็ๆฅๅฃ
โ โ โโโ ExamController.java # ่่ฏๆฅๅฃ๏ผๅบ้ข/ๆไบค๏ผ
โ โ โโโ GiftController.java # ็คผๅ/ๅ
ๆข/้้ข/็งฏๅๆฅๅฃ
โ โโโ dto/
โ โ โโโ AuthDto.java # ่ฎค่ฏ่ฏทๆฑ/ๅๅบ DTO
โ โ โโโ ChildDto.java # ๅญฉๅญ็ธๅ
ณ DTO
โ โ โโโ ExamDto.java # ่่ฏ็ธๅ
ณ DTO
โ โ โโโ GiftDto.java # ็คผๅ็ธๅ
ณ DTO
โ โโโ entity/
โ โ โโโ User.java # ็จๆทๅฎไฝ
โ โ โโโ Child.java # ๅญฉๅญๅฎไฝ
โ โ โโโ Question.java # ้ข็ฎๅฎไฝ
โ โ โโโ ExamRecord.java # ่่ฏ่ฎฐๅฝๅฎไฝ
โ โ โโโ WrongQuestion.java # ้้ขๅฎไฝ
โ โ โโโ Gift.java # ็คผๅๅฎไฝ
โ โ โโโ RedeemRecord.java # ๅ
ๆข่ฎฐๅฝๅฎไฝ
โ โ โโโ PointsHistory.java # ็งฏๅๅๅฒๅฎไฝ
โ โโโ repository/ # JPA Repository ๆฅๅฃ
โ โโโ service/
โ โโโ AuthService.java # ่ฎค่ฏๆๅก
โ โโโ ExamService.java # ่่ฏๆๅก๏ผๅบ้ข/ๆนๆน๏ผ
โ โโโ GiftService.java # ็คผๅ/ๅ
ๆขๆๅก
โโโ src/main/resources/
โ โโโ application.yml # ๅบ็จ้
็ฝฎ
โโโ Dockerfile # Docker ้ๅๆๅปบ
โโโ docker-compose.yml # Docker Compose ็ผๆ
โโโ check_compile.sh # ็ผ่ฏๆฃๆฅ่ๆฌ
โโโ start.sh # ไธ้ฎๅฏๅจ่ๆฌ
โโโ pom.xml # Maven ้
็ฝฎ
```
---
## ๐ ็ฏๅข่ฆๆฑ
| ๅทฅๅ
ท | ๆไฝ็ๆฌ | ๆจ่็ๆฌ | ่ฏดๆ |
|------|----------|----------|------|
| JDK | 17 | 17 LTS | [ไธ่ฝฝๅฐๅ](#jdk-17) |
| Maven | 3.8 | 3.9+ | [ไธ่ฝฝๅฐๅ](#maven) |
| Docker | 20.0+ | ๆๆฐ | ๅฏ้๏ผ็จไบๅฎนๅจๅ้จ็ฝฒ |
| Docker Compose | 2.0+ | ๆๆฐ | ๅฏ้๏ผ็จไบ็ผๆ |
---
## ๐ฝ ไพ่ตไธ่ฝฝไธๅฝๅ
้ๅ้
็ฝฎ
### JDK 17
**ๅฎๆนไธ่ฝฝ๏ผ**
- Adoptium (Eclipse Temurin): https://adoptium.net/temurin/releases/?version=17
- Azul Zulu: https://www.azul.com/downloads/?version=java-17-lts&os=linux&architecture=x86-64-bit&package=jdk
**ๅฝๅ
้ๅ๏ผ**
- ๅไธบ้ๅ: https://repo.huaweicloud.com/java/jdk/
- ๆธ
ๅ้ๅ: https://mirrors.tuna.tsinghua.edu.cn/Adoptium/
**ๅฟซ้ๅฎ่ฃ
๏ผUbuntu/Debian๏ผ๏ผ**
```bash
# Ubuntu/Debian
sudo apt install openjdk-17-jdk
# CentOS/RHEL
sudo yum install java-17-openjdk-devel
# macOS
brew install openjdk@17
# ้ช่ฏ
java -version
```
### Maven
**ๅฎๆนไธ่ฝฝ๏ผ**
- https://maven.apache.org/download.cgi
**ๅฝๅ
้ๅ้
็ฝฎ๏ผ้่ฆ๏ผๅ ้ไพ่ตไธ่ฝฝ๏ผ๏ผ**
ๅๅปบๆ็ผ่พ `~/.m2/settings.xml`๏ผ
```xml
aliyunmaven
*
้ฟ้ไบๅ
ฌๅ
ฑไปๅบ
https://maven.aliyun.com/repository/public
```
**ๅ
ถไปๅฝๅ
้ๅๆบ๏ผ**
| ๅ็งฐ | ๅฐๅ | ่ฏดๆ |
|------|------|------|
| ้ฟ้ไบ | `https://maven.aliyun.com/repository/public` | ๆจ่๏ผๆ็จณๅฎ |
| ่
พ่ฎฏไบ | `https://mirrors.cloud.tencent.com/nexus/repository/maven-public/` | ๅค้ |
| ๅไธบไบ | `https://repo.huaweicloud.com/repository/maven/` | ๅค้ |
| ไธญๅคฎไปๅบ | `https://repo.maven.apache.org/maven2` | ๅฎๆนๆบ๏ผๆ
ข๏ผ |
---
## ๐ ๅฟซ้ๅฏๅจ
### ๆนๅผไธ๏ผ็ดๆฅ่ฟ่ก๏ผๅผๅๆจ่๏ผ
```bash
# 1. ๅ
้้กน็ฎ
git clone https://gitee.com/shisenlin/zhuangyuan-java.git
cd zhuangyuan-java
# 2. ็ผ่ฏๆๅ
๏ผ่ทณ่ฟๆต่ฏ๏ผ
mvn clean package -DskipTests
# 3. ่ฟ่ก๏ผ้ป่ฎคไฝฟ็จ H2 ๅ
ๅญๆฐๆฎๅบ๏ผๆ ้้ขๅคๅฎ่ฃ
ๆฐๆฎๅบ๏ผ
java -jar target/zhuangyuan-backend-1.0.0.jar
# 4. ่ฎฟ้ฎ
# API: http://localhost:8080
# H2 ๆงๅถๅฐ: http://localhost:8080/h2-console
```
### ๆนๅผไบ๏ผMaven ็ดๆฅ่ฟ่ก
```bash
mvn spring-boot:run
```
### ๆนๅผไธ๏ผDocker Compose ไธ้ฎ้จ็ฝฒ๏ผ็ไบงๆจ่๏ผ
```bash
# ๅฏๅจ๏ผๅ
ๅซ PostgreSQL ๆฐๆฎๅบ + ๅ็ซฏๆๅก๏ผ
bash start.sh start
# ๆๆๅจ
docker compose up -d --build
# ๆฅ็ๆฅๅฟ
bash start.sh logs
# ๅๆญข
bash start.sh stop
```
---
## ๐ณ Docker ้จ็ฝฒ
### Dockerfile
```dockerfile
# ๆๅปบ้ถๆฎต
FROM maven:3.9-eclipse-temurin-17-alpine AS build
WORKDIR /app
COPY pom.xml .
RUN mvn dependency:go-offline -B
COPY src ./src
RUN mvn package -DskipTests -B
# ่ฟ่ก้ถๆฎต
FROM eclipse-temurin:17-jre-alpine
WORKDIR /app
COPY --from=build /app/target/*.jar app.jar
RUN mkdir -p data/uploads
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
```
### docker-compose.yml
```yaml
services:
db:
image: postgres:15-alpine
environment:
POSTGRES_DB: zhuangyuan
POSTGRES_USER: zhuangyuan
POSTGRES_PASSWORD: zhuangyuan123
volumes:
- pgdata:/var/lib/postgresql/data
ports:
- "5432:5432"
backend:
build: .
ports:
- "8080:8080"
environment:
DB_HOST: db
DB_PORT: 5432
DB_NAME: zhuangyuan
DB_USER: zhuangyuan
DB_PASS: zhuangyuan123
JWT_SECRET: your-very-long-secret-key-here
depends_on:
- db
volumes:
pgdata:
```
### ๅๆขๅฐ PostgreSQL ็ไบงๆฐๆฎๅบ
่ฎพ็ฝฎ็ฏๅขๅ้ๆไฟฎๆน `application-prod.yml`๏ผ
```yaml
spring:
datasource:
url: jdbc:postgresql://${DB_HOST}:${DB_PORT}/${DB_NAME}
username: ${DB_USER}
password: ${DB_PASS}
driver-class-name: org.postgresql.Driver
jpa:
hibernate:
ddl-auto: update
properties:
hibernate:
dialect: org.hibernate.dialect.PostgreSQLDialect
```
---
## ๐ก API ๆฅๅฃๆๆกฃ
### ่ฎค่ฏๆฅๅฃ๏ผๆ ้ Token๏ผ
| ๆนๆณ | ่ทฏๅพ | ่ฏดๆ | ่ฏทๆฑไฝ |
|------|------|------|--------|
| POST | `/api/auth/register` | ็จๆทๆณจๅ | `{username, password, nickname}` |
| POST | `/api/auth/login` | ็จๆท็ปๅฝ | `{username, password}` |
### ๅญฉๅญ็ฎก็๏ผ้่ฆ Token๏ผ
| ๆนๆณ | ่ทฏๅพ | ่ฏดๆ | ่ฏทๆฑไฝ |
|------|------|------|--------|
| GET | `/api/children` | ่ทๅๅญฉๅญๅ่กจ | - |
| POST | `/api/children` | ๆทปๅ ๅญฉๅญ | `{name, age, grade, avatar}` |
| PUT | `/api/children/{id}/theme` | ๆดๆฐไธป้ข | `{theme}` |
### ่่ฏๆฅๅฃ๏ผ้่ฆ Token๏ผ
| ๆนๆณ | ่ทฏๅพ | ่ฏดๆ | ่ฏทๆฑไฝ |
|------|------|------|--------|
| POST | `/api/exam/generate` | ็ๆ็ปไน ้ข | `{childId, count}` |
| POST | `/api/exam/generate-test` | ็ๆๆญฃๅผ่่ฏ(42้ข) | `{childId}` |
| POST | `/api/exam/submit` | ๆไบค็ญๆก | `{examId, childId, examType, answers[]}` |
### ็คผๅ / ๅ
ๆข / ้้ข / ็งฏๅ๏ผ้่ฆ Token๏ผ
| ๆนๆณ | ่ทฏๅพ | ่ฏดๆ | ่ฏทๆฑไฝ |
|------|------|------|--------|
| GET | `/api/gifts` | ่ทๅ็คผๅๅ่กจ | - |
| POST | `/api/gifts` | ๆทปๅ ็คผๅ | `{name, price, icon, stock}` |
| DELETE | `/api/gifts/{id}` | ๅ ้ค็คผๅ๏ผไธๆถ๏ผ | - |
| POST | `/api/redeem` | ๅ
ๆข็คผๅ | `{childId, giftId}` |
| GET | `/api/redeem/{childId}` | ่ทๅๅ
ๆข่ฎฐๅฝ | - |
| GET | `/api/redeem/pending/list` | ๅพ
ๅฎกๆนๅ่กจ | - |
| POST | `/api/redeem/{id}/approve` | ๅฎกๆน้่ฟ | - |
| POST | `/api/redeem/{id}/reject` | ๅฎกๆนๆ็ป | - |
| GET | `/api/wrong/{childId}` | ้้ขๅ่กจ | - |
| GET | `/api/wrong/stats/{childId}` | ้้ข็ฅ่ฏ็น็ป่ฎก | - |
| GET | `/api/points/{childId}` | ็งฏๅๅๅฒ | - |
| GET | `/api/exam-records/{childId}` | ่่ฏ่ฎฐๅฝ | - |
### ่ฏทๆฑ็คบไพ
```bash
# ๆณจๅ
curl -X POST http://localhost:8080/api/auth/register \
-H "Content-Type: application/json" \
-d '{"username":"parent1","password":"123456","nickname":"ๅฎถ้ฟ"}'
# ็ปๅฝ่ทๅ Token
curl -X POST http://localhost:8080/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"parent1","password":"123456"}'
# ไฝฟ็จ Token ่ฎฟ้ฎ
curl http://localhost:8080/api/children \
-H "Authorization: Bearer "
```
---
## ๐ ๆฐๆฎๅบ่ฎพ่ฎก
### ER ๅ
ณ็ณปๅพ
```
User (็จๆท)
โโโ 1:N โโ Child (ๅญฉๅญ)
โ โโโ 1:N โโ ExamRecord (่่ฏ่ฎฐๅฝ)
โ โโโ 1:N โโ WrongQuestion (้้ข)
โ โโโ 1:N โโ PointsHistory (็งฏๅๅๅฒ)
โ โโโ 1:N โโ RedeemRecord (ๅ
ๆข่ฎฐๅฝ)
โโโ 1:N โโ Gift (็คผๅ๏ผๅๅปบ่
)
Question (้ข็ฎๅบ)
โโโ ่ขซ ExamRecord ๅผ็จ
```
### ๆ ธๅฟ่กจ็ปๆ
| ่กจๅ | ่ฏดๆ | ไธป่ฆๅญๆฎต |
|------|------|----------|
| `users` | ็จๆท่กจ | id, username, password, nickname, role |
| `children` | ๅญฉๅญ่กจ | id, parent_id, name, age, grade, avatar, points, theme |
| `questions` | ้ข็ฎ่กจ | id, subject, grade_level, knowledge_point, content, answer |
| `exam_records` | ่่ฏ่ฎฐๅฝ | id, child_id, exam_type, question_ids, score, points_earned |
| `wrong_questions` | ้้ข่กจ | id, child_id, question_id, wrong_answer, correct_answer |
| `gifts` | ็คผๅ่กจ | id, name, price, icon, stock, is_active |
| `redeem_records` | ๅ
ๆข่ฎฐๅฝ | id, child_id, gift_id, points, status |
| `points_history` | ็งฏๅๅๅฒ | id, child_id, type, points, description |
---
## โ ้
็ฝฎ่ฏดๆ
### application.yml ๆ ธๅฟ้
็ฝฎ
```yaml
server:
port: 8080 # ๆๅก็ซฏๅฃ
spring:
datasource:
url: jdbc:h2:mem:testdb # ๅผๅ็จ H2 ๅ
ๅญๆฐๆฎๅบ
jpa:
hibernate:
ddl-auto: update # ่ชๅจๅปบ่กจ๏ผ็ไบง็ฏๅขๅปบ่ฎฎ็จ flyway๏ผ
jwt:
secret: xxx # JWT ็ญพๅๅฏ้ฅ๏ผ็ไบง็ฏๅขๅฟ
้กปไฟฎๆน๏ผ๏ผ
expiration: 604800000 # Token ๆๆๆ 7 ๅคฉ๏ผๆฏซ็ง๏ผ
baidu:
ocr:
api-key: ${BAIDU_OCR_API_KEY:} # ็พๅบฆ OCR API Key๏ผๅฏ้๏ผ
secret-key: ${BAIDU_OCR_SECRET_KEY:}
upload:
dir: ${UPLOAD_DIR:./data/uploads} # ๆไปถไธไผ ็ฎๅฝ
```
### ็ฏๅขๅ้
| ๅ้ | ่ฏดๆ | ้ป่ฎคๅผ |
|------|------|--------|
| `DB_HOST` | ๆฐๆฎๅบๅฐๅ | localhost |
| `DB_PORT` | ๆฐๆฎๅบ็ซฏๅฃ | 5432 |
| `DB_NAME` | ๆฐๆฎๅบๅ | zhuangyuan |
| `DB_USER` | ๆฐๆฎๅบ็จๆท | zhuangyuan |
| `DB_PASS` | ๆฐๆฎๅบๅฏ็ | zhuangyuan123 |
| `JWT_SECRET` | JWT ๅฏ้ฅ | ๅ
็ฝฎๅผๅๅฏ้ฅ |
| `BAIDU_OCR_API_KEY` | ็พๅบฆ OCR Key | ็ฉบ |
| `UPLOAD_DIR` | ไธไผ ็ฎๅฝ | ./data/uploads |
---
## โ ๅธธ่ง้ฎ้ข
### Q: Maven ไธ่ฝฝไพ่ตๅคชๆ
ข๏ผ
้
็ฝฎๅฝๅ
้ๅ๏ผๅ่ [Maven ้ๅ้
็ฝฎ](#maven)ใ
### Q: ๅฆไฝๅๆขๅฐ PostgreSQL๏ผ
่ฎพ็ฝฎ็ฏๅขๅ้ `DB_HOST`, `DB_PORT`, `DB_NAME`, `DB_USER`, `DB_PASS`๏ผๆๅๅปบ `application-prod.yml` ๅนถๆฟๆดป `prod` profileใ
### Q: JWT Token ่ฟๆๆถ้ดๆไนๆน๏ผ
ไฟฎๆน `application.yml` ไธญ็ `jwt.expiration`๏ผๅไฝๆฏซ็งใ้ป่ฎค 604800000๏ผ7 ๅคฉ๏ผใ
### Q: ๅฆไฝๆทปๅ ๆฐ็ๅนด็บง้ขๅ๏ผ
็ผ่พ `ExamService.java` ไธญ็ `TEMPLATES` Map๏ผๆทปๅ ๆฐ็ๅนด็บงๅ้ขๅๆจกๆฟใ
### Q: ็ไบง็ฏๅข้่ฆๆณจๆไปไน๏ผ
1. ไฟฎๆน `jwt.secret` ไธบ้ๆบ้ฟๅญ็ฌฆไธฒ
2. ไฝฟ็จ PostgreSQL ๆฟไปฃ H2
3. ้
็ฝฎ HTTPS
4. ไฟฎๆน `ddl-auto` ไธบ `validate` ๆไฝฟ็จ Flyway
5. ้
็ฝฎๆฅๅฟ็บงๅซ
---
## ๐ License
MIT License