# demo-xcx-fly
**Repository Path**: devbigapp/demo-xcx-fly
## Basic Information
- **Project Name**: demo-xcx-fly
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-01-31
- **Last Updated**: 2026-02-01
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 寄养儿童监管系统
**Foster Care Management System**
一个为儿童福利院照管人员提供的日常工作管理工具
[](https://spring.io/projects/spring-boot)
[](https://www.oracle.com/java/)
[](https://www.mysql.com/)
[](https://developers.weixin.qq.com/miniprogram/dev/framework/)
---
## 📋 目录
- [项目简介](#-项目简介)
- [核心功能](#-核心功能)
- [技术架构](#-技术架构)
- [快速开始](#-快速开始)
- [项目结构](#-项目结构)
- [API文档](#-api文档)
- [数据库设计](#-数据库设计)
- [部署指南](#-部署指南)
- [开发指南](#-开发指南)
- [常见问题](#-常见问题)
- [许可证](#-许可证)
---
## 🎯 项目简介
寄养儿童监管系统是一个专为儿童福利院照管人员设计的移动端管理工具,通过微信小程序和后端API服务,帮助工作人员记录和监督寄养儿童的日常照护情况。
### 产品定位
- **目标用户**:儿童福利院照管人员
- **核心价值**:简化日常工作记录,提升监管效率
- **应用场景**:每日打卡、照片上传、数据统计
### 项目组成
```
寄养儿童监管系统
├── 微信小程序前端 (code/xcx)
└── Java后端API服务 (code/api)
```
---
## ✨ 核心功能
### 1. 用户管理
- ✅ 照管人员注册登录
- ✅ 个人信息管理
- ✅ JWT Token认证
- ✅ 安全的密码加密存储
### 2. 每日打卡
- ✅ 定位打卡记录
- ✅ 地址信息自动获取
- ✅ 打卡历史查询(支持按月筛选)
- ✅ 连续打卡天数统计
- ✅ 支持重新打卡
### 3. 照片上传
- ✅ 伙食照片上传(每日最多6张)
- ✅ 活动照片上传
- ✅ 照片记录管理
- ✅ 按类型和日期筛选
- ✅ 照片预览和删除
### 4. 数据统计
- ✅ 打卡天数统计
- ✅ 照片数量统计
- ✅ 连续打卡天数计算
- ✅ 个人数据汇总展示
---
## 🏗️ 技术架构
### 后端技术栈
| 技术 | 版本 | 说明 |
|------|------|------|
| Spring Boot | 3.2.1 | 核心框架 |
| Java | 17 | 开发语言 |
| Spring Data JPA | 3.2.1 | ORM框架 |
| Spring Security | 6.2.1 | 安全认证 |
| MySQL | 8.0+ | 关系型数据库 |
| JWT | 0.12.3 | Token认证 |
| Springdoc OpenAPI | 2.3.0 | API文档 |
| Maven | 3.6+ | 构建工具 |
| Lombok | - | 代码简化 |
### 前端技术栈
| 技术 | 说明 |
|------|------|
| 微信小程序 | 原生开发框架 |
| JavaScript | ES6+ |
| WXML | 小程序模板语言 |
| WXSS | 小程序样式语言 |
### 系统架构图
```
┌─────────────────┐
│ 微信小程序前端 │
│ (code/xcx) │
└────────┬────────┘
│ HTTPS
│ REST API
┌────────┴────────┐
│ Spring Boot │
│ 后端服务 │
│ (code/api) │
└────────┬────────┘
│ JDBC
┌────────┴────────┐
│ MySQL 数据库 │
└─────────────────┘
```
---
## 🚀 快速开始
### 环境要求
#### 后端开发环境
- **JDK**: 17 或更高版本
- **Maven**: 3.6 或更高版本
- **MySQL**: 8.0 或更高版本
- **IDE**: IntelliJ IDEA / Eclipse(推荐)
#### 前端开发环境
- **微信开发者工具**: [下载地址](https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html)
### 后端服务启动
#### 1. 克隆项目
```bash
git clone
cd foster-care-system
```
#### 2. 创建数据库
```bash
# 登录MySQL
mysql -u root -p
# 创建数据库
CREATE DATABASE foster_care CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# 退出MySQL
exit;
```
#### 3. 初始化数据库表
```bash
# 执行初始化脚本
mysql -u root -p foster_care < code/api/src/main/resources/schema.sql
```
#### 4. 配置数据库连接
编辑 `code/api/src/main/resources/application.yml`:
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/foster_care
username: root
password: your_password # 修改为你的MySQL密码
```
#### 5. 构建并运行
```bash
# 进入后端目录
cd code/api
# 清理并构建项目
mvn clean install
# 运行应用
mvn spring-boot:run
```
或者使用启动脚本:
```bash
# Linux/Mac
./start.sh
# Windows
start.bat
```
#### 6. 验证启动
访问 Swagger API 文档:
```
http://localhost:8080/api/swagger-ui.html
```
看到 Swagger UI 界面即表示启动成功!
### 小程序前端启动
#### 1. 打开微信开发者工具
下载并安装 [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html)
#### 2. 导入项目
- 打开微信开发者工具
- 点击"导入项目"
- 选择 `code/xcx` 目录
- 填写 AppID(测试可使用测试号)
#### 3. 配置后端地址
编辑 `code/xcx/utils/api.js`,修改 API 基础地址:
```javascript
const BASE_URL = 'http://localhost:8080/api'; // 开发环境
// const BASE_URL = 'https://your-domain.com/api'; // 生产环境
```
#### 4. 编译预览
点击"编译"按钮,即可在模拟器中预览小程序。
### 测试账号
使用以下信息注册测试账号:
```json
{
"name": "张照管",
"phone": "13800138000",
"password": "123456",
"idCard": "110101199001011234",
"organization": "某某市儿童福利院",
"childrenNames": "小明, 小红, 小华"
}
```
---
## 📁 项目结构
### 整体结构
```
foster-care-system/
├── code/
│ ├── api/ # Java后端服务
│ └── xcx/ # 微信小程序前端
├── docs/ # 项目文档
└── .kiro/ # Kiro配置和规范
```
### 后端结构 (code/api)
```
code/api/
├── src/main/java/com/fostercare/
│ ├── FosterCareApplication.java # 应用启动类
│ ├── common/ # 通用组件
│ │ ├── ApiResponse.java # 统一响应格式
│ │ └── ErrorCode.java # 错误码枚举
│ ├── config/ # 配置类
│ │ ├── SecurityConfig.java # Spring Security配置
│ │ └── OpenApiConfig.java # Swagger配置
│ ├── controller/ # 控制器层(API接口)
│ │ ├── AuthController.java # 认证接口
│ │ ├── CheckinController.java # 打卡接口
│ │ ├── PhotoController.java # 照片接口
│ │ └── StatisticsController.java # 统计接口
│ ├── dto/ # 数据传输对象
│ ├── entity/ # 实体类(数据库映射)
│ │ ├── User.java # 用户实体
│ │ ├── CheckinRecord.java # 打卡记录
│ │ └── PhotoRecord.java # 照片记录
│ ├── exception/ # 异常处理
│ │ ├── BusinessException.java # 业务异常
│ │ └── GlobalExceptionHandler.java # 全局异常处理器
│ ├── repository/ # 数据访问层(JPA)
│ ├── security/ # 安全相关
│ │ └── JwtAuthenticationFilter.java # JWT过滤器
│ ├── service/ # 业务逻辑层
│ │ ├── AuthService.java # 认证服务
│ │ ├── CheckinService.java # 打卡服务
│ │ ├── PhotoService.java # 照片服务
│ │ ├── StatisticsService.java # 统计服务
│ │ └── FileStorageService.java # 文件存储服务
│ └── util/ # 工具类
│ └── JwtUtil.java # JWT工具类
├── src/main/resources/
│ ├── application.yml # 应用配置
│ └── schema.sql # 数据库初始化脚本
├── pom.xml # Maven配置
├── README.md # 后端说明文档
├── QUICK_START.md # 快速启动指南
├── WECHAT_INTEGRATION.md # 小程序集成指南
└── DEPLOYMENT_CHECKLIST.md # 部署检查清单
```
### 前端结构 (code/xcx)
```
code/xcx/
├── app.js # 应用入口(全局逻辑)
├── app.json # 应用配置(页面路由、TabBar)
├── app.wxss # 全局样式
├── sitemap.json # 小程序索引配置
├── pages/ # 页面目录
│ ├── login/ # 登录注册页
│ ├── index/ # 首页(概览)
│ ├── checkin/ # 打卡页
│ ├── photos/ # 照片上传页
│ ├── profile/ # 个人中心
│ ├── checkin-history/ # 打卡历史
│ └── photo-manager/ # 照片管理
├── utils/ # 工具函数
│ ├── api.js # API接口封装
│ ├── request.js # 网络请求封装
│ ├── storage.js # 本地存储封装
│ └── util.js # 通用工具
└── README.md # 小程序说明文档
```
---
## 📚 API文档
### 访问方式
启动后端服务后,访问 Swagger UI:
```
http://localhost:8080/api/swagger-ui.html
```
### 认证方式
除注册和登录接口外,所有接口都需要在请求头中携带 JWT Token:
```
Authorization: Bearer
```
### 主要接口
#### 1. 认证接口 (AuthController)
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | `/auth/register` | 用户注册 |
| POST | `/auth/login` | 用户登录 |
| GET | `/auth/info` | 获取用户信息 |
| POST | `/auth/logout` | 用户登出 |
#### 2. 打卡接口 (CheckinController)
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | `/checkin` | 提交打卡 |
| GET | `/checkin/today` | 获取今日打卡状态 |
| GET | `/checkin/records` | 查询打卡记录(分页) |
| GET | `/checkin/records/{year}/{month}` | 按月查询打卡记录 |
| DELETE | `/checkin/{recordId}` | 删除打卡记录 |
#### 3. 照片接口 (PhotoController)
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | `/photos/upload` | 上传照片 |
| GET | `/photos/today/statistics` | 获取今日照片统计 |
| GET | `/photos/records` | 查询照片记录(分页) |
| GET | `/photos/records/{year}/{month}` | 按月查询照片记录 |
| DELETE | `/photos/{photoId}` | 删除照片 |
#### 4. 统计接口 (StatisticsController)
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | `/statistics` | 获取用户统计数据 |
### 请求示例
#### 用户注册
```bash
curl -X POST http://localhost:8080/api/auth/register \
-H "Content-Type: application/json" \
-d '{
"name": "张照管",
"phone": "13800138000",
"password": "123456",
"idCard": "110101199001011234",
"organization": "某某市儿童福利院",
"childrenNames": "小明, 小红, 小华"
}'
```
#### 用户登录
```bash
curl -X POST http://localhost:8080/api/auth/login \
-H "Content-Type: application/json" \
-d '{
"phone": "13800138000",
"password": "123456"
}'
```
#### 提交打卡
```bash
curl -X POST http://localhost:8080/api/checkin \
-H "Content-Type: application/json" \
-H "Authorization: Bearer " \
-d '{
"latitude": 39.9042,
"longitude": 116.4074,
"address": "北京市东城区天安门广场"
}'
```
### 响应格式
所有接口统一返回格式:
```json
{
"code": 200,
"message": "操作成功",
"data": { ... }
}
```
错误响应示例:
```json
{
"code": 400,
"message": "手机号已被注册",
"data": null
}
```
---
## 🗄️ 数据库设计
### 用户表 (user)
| 字段 | 类型 | 说明 | 约束 |
|------|------|------|------|
| id | BIGINT | 主键 | PRIMARY KEY, AUTO_INCREMENT |
| name | VARCHAR(50) | 姓名 | NOT NULL |
| phone | VARCHAR(11) | 手机号 | UNIQUE, NOT NULL |
| password | VARCHAR(100) | 密码(BCrypt加密) | NOT NULL |
| id_card | VARCHAR(18) | 身份证号 | UNIQUE, NOT NULL |
| organization | VARCHAR(100) | 工作机构 | NOT NULL |
| children_names | VARCHAR(500) | 负责的儿童姓名 | - |
| register_time | DATETIME | 注册时间 | - |
| last_login_time | DATETIME | 最后登录时间 | - |
| created_at | DATETIME | 创建时间 | DEFAULT CURRENT_TIMESTAMP |
| updated_at | DATETIME | 更新时间 | ON UPDATE CURRENT_TIMESTAMP |
### 打卡记录表 (checkin_record)
| 字段 | 类型 | 说明 | 约束 |
|------|------|------|------|
| id | BIGINT | 主键 | PRIMARY KEY, AUTO_INCREMENT |
| user_id | BIGINT | 用户ID | NOT NULL, FOREIGN KEY |
| checkin_date | DATE | 打卡日期 | NOT NULL |
| checkin_time | DATETIME | 打卡时间 | NOT NULL |
| latitude | DOUBLE | 纬度 | NOT NULL |
| longitude | DOUBLE | 经度 | NOT NULL |
| address | VARCHAR(500) | 地址 | - |
| created_at | DATETIME | 创建时间 | DEFAULT CURRENT_TIMESTAMP |
**索引**:
- `idx_user_date`: (user_id, checkin_date) - 唯一索引
- `idx_checkin_date`: (checkin_date) - 普通索引
### 照片记录表 (photo_record)
| 字段 | 类型 | 说明 | 约束 |
|------|------|------|------|
| id | BIGINT | 主键 | PRIMARY KEY, AUTO_INCREMENT |
| user_id | BIGINT | 用户ID | NOT NULL, FOREIGN KEY |
| photo_type | VARCHAR(20) | 照片类型 | NOT NULL (meal/activity) |
| file_path | VARCHAR(500) | 文件路径 | NOT NULL |
| file_name | VARCHAR(255) | 文件名 | NOT NULL |
| file_size | BIGINT | 文件大小(字节) | NOT NULL |
| file_url | VARCHAR(500) | 文件URL | NOT NULL |
| upload_date | DATE | 上传日期 | NOT NULL |
| upload_time | DATETIME | 上传时间 | NOT NULL |
| created_at | DATETIME | 创建时间 | DEFAULT CURRENT_TIMESTAMP |
**索引**:
- `idx_user_date`: (user_id, upload_date) - 普通索引
- `idx_photo_type`: (photo_type) - 普通索引
### ER图
```
┌─────────────┐
│ User │
│ (用户表) │
├─────────────┤
│ id (PK) │
│ name │
│ phone │
│ password │
│ id_card │
│ ... │
└──────┬──────┘
│ 1
│
│ N
┌──────┴──────────────┐
│ │
│ │
┌─────────────┐ ┌─────────────┐
│CheckinRecord│ │PhotoRecord │
│ (打卡记录) │ │ (照片记录) │
├─────────────┤ ├─────────────┤
│ id (PK) │ │ id (PK) │
│ user_id(FK) │ │ user_id(FK) │
│ checkin_date│ │ photo_type │
│ latitude │ │ file_path │
│ longitude │ │ upload_date │
│ address │ │ ... │
└─────────────┘ └─────────────┘
```
---
## 🚢 部署指南
### 开发环境部署
参考 [快速开始](#-快速开始) 章节。
### 生产环境部署
#### 1. 服务器要求
- **操作系统**: Linux (推荐 Ubuntu 20.04+)
- **配置**: 2核4G内存(最低配置)
- **存储**: 50GB SSD
- **网络**: 公网IP,开放80/443端口
#### 2. 安装依赖
```bash
# 安装 JDK 17
sudo apt update
sudo apt install openjdk-17-jdk
# 安装 MySQL 8
sudo apt install mysql-server
# 安装 Nginx
sudo apt install nginx
```
#### 3. 配置数据库
```bash
# 登录MySQL
sudo mysql -u root -p
# 创建数据库和用户
CREATE DATABASE foster_care CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'fostercare'@'localhost' IDENTIFIED BY 'your_strong_password';
GRANT ALL PRIVILEGES ON foster_care.* TO 'fostercare'@'localhost';
FLUSH PRIVILEGES;
EXIT;
# 导入数据库结构
mysql -u fostercare -p foster_care < schema.sql
```
#### 4. 配置应用
编辑 `application.yml` 生产环境配置:
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/foster_care
username: fostercare
password: your_strong_password
jpa:
show-sql: false # 生产环境关闭SQL日志
jwt:
secret: your_production_secret_key_at_least_256_bits
expiration: 604800000 # 7天
file:
upload-dir: /var/www/foster-care/uploads
```
#### 5. 打包部署
```bash
# 打包应用
mvn clean package -DskipTests
# 创建部署目录
sudo mkdir -p /opt/foster-care
sudo cp target/foster-care-backend-1.0.0.jar /opt/foster-care/
# 创建上传目录
sudo mkdir -p /var/www/foster-care/uploads
sudo chown -R www-data:www-data /var/www/foster-care
```
#### 6. 配置系统服务
创建 `/etc/systemd/system/foster-care.service`:
```ini
[Unit]
Description=Foster Care Backend Service
After=syslog.target network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/opt/foster-care
ExecStart=/usr/bin/java -jar /opt/foster-care/foster-care-backend-1.0.0.jar
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
```
启动服务:
```bash
sudo systemctl daemon-reload
sudo systemctl enable foster-care
sudo systemctl start foster-care
sudo systemctl status foster-care
```
#### 7. 配置Nginx反向代理
创建 `/etc/nginx/sites-available/foster-care`:
```nginx
server {
listen 80;
server_name your-domain.com;
# 重定向到HTTPS
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name your-domain.com;
# SSL证书配置
ssl_certificate /etc/nginx/ssl/your-domain.crt;
ssl_certificate_key /etc/nginx/ssl/your-domain.key;
# API代理
location /api/ {
proxy_pass http://localhost:8080/api/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 静态文件(照片)
location /uploads/ {
alias /var/www/foster-care/uploads/;
expires 30d;
add_header Cache-Control "public, immutable";
}
}
```
启用配置:
```bash
sudo ln -s /etc/nginx/sites-available/foster-care /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
```
#### 8. 配置HTTPS证书
使用 Let's Encrypt 免费证书:
```bash
# 安装 Certbot
sudo apt install certbot python3-certbot-nginx
# 获取证书
sudo certbot --nginx -d your-domain.com
# 自动续期
sudo certbot renew --dry-run
```
#### 9. 小程序配置
在微信小程序管理后台配置:
1. **服务器域名**:
- request合法域名:`https://your-domain.com`
- uploadFile合法域名:`https://your-domain.com`
- downloadFile合法域名:`https://your-domain.com`
2. **业务域名**:添加 `your-domain.com`
3. 修改小程序 `utils/api.js` 中的 BASE_URL:
```javascript
const BASE_URL = 'https://your-domain.com/api';
```
#### 10. 部署检查清单
参考 `code/api/DEPLOYMENT_CHECKLIST.md` 完成部署前检查。
---
## 👨💻 开发指南
### 代码规范
#### Java代码规范
- **类名**: PascalCase (例: `UserService`, `CheckinController`)
- **方法名**: camelCase (例: `getUserInfo`, `doCheckin`)
- **常量**: UPPER_SNAKE_CASE (例: `MAX_PHOTOS_PER_DAY`)
- **包名**: 小写 (例: `com.fostercare.service`)
#### 小程序代码规范
- **文件名**: kebab-case (例: `checkin-history`)
- **变量名**: camelCase (例: `userInfo`, `hasCheckedIn`)
- **常量**: UPPER_SNAKE_CASE (例: `API_BASE_URL`)
### 分支管理
```
main # 主分支(生产环境)
├── develop # 开发分支
│ ├── feature/user-auth # 功能分支
│ ├── feature/checkin # 功能分支
│ └── bugfix/photo-upload # 修复分支
```
### 提交规范
使用语义化提交信息:
```
feat: 添加用户注册功能
fix: 修复打卡定位不准确问题
docs: 更新API文档
style: 优化代码格式
refactor: 重构照片上传逻辑
test: 添加单元测试
chore: 更新依赖版本
```
### 本地开发流程
1. **创建功能分支**
```bash
git checkout -b feature/your-feature
```
2. **开发并测试**
```bash
# 后端测试
cd code/api
mvn test
# 启动后端服务
mvn spring-boot:run
```
3. **提交代码**
```bash
git add .
git commit -m "feat: 添加新功能"
git push origin feature/your-feature
```
4. **创建Pull Request**
### 调试技巧
#### 后端调试
1. **查看日志**
```bash
tail -f logs/foster-care.log
```
2. **使用Swagger测试API**
```
http://localhost:8080/api/swagger-ui.html
```
3. **数据库查询**
```sql
-- 查看用户数据
SELECT * FROM user;
-- 查看今日打卡
SELECT * FROM checkin_record WHERE checkin_date = CURDATE();
```
#### 小程序调试
1. **开启调试模式**:微信开发者工具 → 详情 → 本地设置 → 不校验合法域名
2. **查看网络请求**:调试器 → Network
3. **查看本地存储**:调试器 → Storage
### 常用开发命令
```bash
# 后端相关
cd code/api
mvn clean install # 构建项目
mvn spring-boot:run # 运行项目
mvn test # 运行测试
mvn clean package # 打包项目
# 数据库相关
mysql -u root -p foster_care < schema.sql # 初始化数据库
mysqldump -u root -p foster_care > backup.sql # 备份数据库
# 日志查看
tail -f logs/foster-care.log # 实时查看日志
grep "ERROR" logs/foster-care.log # 查找错误日志
```
---
## ❓ 常见问题
### 后端相关
**Q: 启动时报错 "Access denied for user"**
A: 检查 `application.yml` 中的数据库用户名和密码是否正确。
**Q: JWT Token过期怎么办?**
A: Token默认有效期7天,过期后需要重新登录获取新Token。
**Q: 文件上传失败**
A: 检查上传目录权限,确保应用有写入权限:
```bash
sudo chmod 755 uploads/
sudo chown -R www-data:www-data uploads/
```
**Q: 如何修改JWT密钥?**
A: 编辑 `application.yml`:
```yaml
jwt:
secret: your_new_secret_key_at_least_256_bits
```
### 小程序相关
**Q: 网络请求失败**
A:
1. 检查后端服务是否启动
2. 检查 `utils/api.js` 中的 BASE_URL 是否正确
3. 开发环境需要在微信开发者工具中关闭域名校验
**Q: 定位获取失败**
A:
1. 检查小程序是否有定位权限
2. 在 `app.json` 中确认已声明 `scope.userLocation` 权限
**Q: 照片上传后看不到**
A: 检查后端文件存储路径配置和Nginx静态文件配置是否正确。
### 数据库相关
**Q: 如何重置数据库?**
A:
```bash
mysql -u root -p
DROP DATABASE foster_care;
CREATE DATABASE foster_care CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE foster_care;
SOURCE schema.sql;
```
**Q: 如何备份数据?**
A:
```bash
mysqldump -u root -p foster_care > backup_$(date +%Y%m%d).sql
```
---
## 📖 相关文档
### 后端文档
- [后端README](code/api/README.md) - 后端详细说明
- [快速启动指南](code/api/QUICK_START.md) - 快速上手指南
- [小程序集成指南](code/api/WECHAT_INTEGRATION.md) - 前后端对接说明
- [部署检查清单](code/api/DEPLOYMENT_CHECKLIST.md) - 生产部署检查
### 前端文档
- [小程序README](code/xcx/README.md) - 小程序详细说明
### 项目文档
- [项目总结](docs/PROJECT_SUMMARY.md) - 项目完整总结
- [测试与修复记录](docs/TESTING_AND_FIXES.md) - 测试和问题修复记录
- [文件清单](docs/FILE_LIST.md) - 项目文件清单
### API文档
- Swagger UI: `http://localhost:8080/api/swagger-ui.html`
- OpenAPI JSON: `http://localhost:8080/api/v3/api-docs`
---
## 🔒 安全特性
### 1. 认证与授权
- **JWT Token认证**: 无状态认证机制
- **Token有效期**: 7天自动过期
- **密码加密**: BCrypt算法加密存储
- **权限控制**: 用户只能访问自己的数据
### 2. 数据安全
- **SQL注入防护**: 使用JPA参数化查询
- **XSS防护**: 输入验证和输出转义
- **CORS配置**: 限制跨域访问来源
### 3. 传输安全
- **HTTPS**: 生产环境强制使用HTTPS
- **请求加密**: 敏感数据传输加密
### 4. 业务安全
- **防重复提交**: 每日打卡唯一性约束
- **文件上传限制**: 限制文件类型和大小
- **访问频率限制**: 防止恶意请求
---
## 🎯 后续优化建议
### 功能增强
- [ ] 添加管理员后台系统
- [ ] 实现数据导出功能(Excel)
- [ ] 添加消息推送通知
- [ ] 实现数据统计图表
- [ ] 添加照片压缩功能
- [ ] 支持批量操作
### 性能优化
- [ ] 引入Redis缓存
- [ ] 实现Token黑名单机制
- [ ] 添加接口限流
- [ ] 优化文件存储(OSS)
- [ ] 数据库读写分离
- [ ] 添加CDN加速
### 安全加固
- [ ] 添加图形验证码
- [ ] 实现IP白名单
- [ ] 添加操作日志审计
- [ ] 实现敏感数据脱敏
- [ ] 添加防重放攻击
- [ ] 实现双因素认证
### 运维改进
- [ ] 实现自动化部署(CI/CD)
- [ ] 添加监控告警系统
- [ ] 实现日志收集分析
- [ ] 添加性能监控
- [ ] 实现自动备份
- [ ] 容器化部署(Docker)
---
## 📄 许可证
本项目仅供学习和使用。
---
## 👥 贡献指南
欢迎贡献代码!请遵循以下步骤:
1. Fork 本仓库
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'feat: 添加某个功能'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 创建 Pull Request
---
## 📞 联系方式
如有问题或建议,请通过以下方式联系:
- **项目Issues**: [GitHub Issues](https://github.com/your-repo/issues)
- **邮箱**: your-email@example.com
---
## 🙏 致谢
感谢以下开源项目:
- [Spring Boot](https://spring.io/projects/spring-boot)
- [Spring Security](https://spring.io/projects/spring-security)
- [JWT](https://jwt.io/)
- [MySQL](https://www.mysql.com/)
- [微信小程序](https://developers.weixin.qq.com/miniprogram/dev/framework/)
---
**寄养儿童监管系统** © 2026
Made with ❤️ for Foster Care