# resource-platform **Repository Path**: seeing_ming/resource-platform ## Basic Information - **Project Name**: resource-platform - **Description**: 资源共享平台 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-13 - **Last Updated**: 2026-09-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # resource-platform-backend 小团队资源共享平台后端(Spring Boot 3.2 骨架),对应需求文档 v1.0 / 技术栈文档 v1.0。 ## 技术栈 | 层 | 技术 | 版本 | |---|---|---| | 框架 | Spring Boot | 3.2.5 | | JDK | OpenJDK | 17 LTS | | 安全 | Spring Security + JWT (jjwt) | 0.12.5 | | ORM | MyBatis-Plus | 3.5.6 | | 数据库 | MySQL | 8.0 | | 缓存 | Spring Data Redis + Redisson | 7.x / 3.31 | | 对象存储 | MinIO SDK | 8.5.11 | | 接口文档 | SpringDoc OpenAPI | 2.3.0 | | 工具 | Hutool + Lombok | 5.8.27 / 提供 | ## 工程结构 ``` resource-platform/backend ├── pom.xml ├── src/main/java/com/resource/platform │ ├── ResourcePlatformApplication.java 启动类 │ ├── common/ 公共层 │ │ ├── constant/Constants.java 通用常量 │ │ ├── context/UserContext.java 线程上下文(当前登录用户) │ │ ├── exception/ 业务异常 + 全局异常处理 │ │ ├── result/ Result / ResultCode / PageResult │ │ └── utils/PageQuery.java 分页基类 │ ├── config/ 配置类 │ │ ├── MyBatisPlusConfig.java 分页 + 乐观锁 + 防全表更新 │ │ ├── RedisConfig.java Redis 序列化 │ │ ├── MinioConfig.java MinIO 客户端 │ │ ├── SecurityConfig.java 无状态 JWT + 角色控制 │ │ ├── WebMvcConfig.java CORS │ │ └── OpenApiConfig.java Swagger 文档 │ ├── security/ JWT 工具 + 过滤器 │ │ ├── JwtProperties.java │ │ ├── JwtUtils.java │ │ └── JwtAuthenticationFilter.java │ ├── entity/ 18 个 MyBatis-Plus 实体 │ ├── mapper/ 18 个 Mapper 接口 │ ├── dto/ │ │ ├── request/ 17 个请求 DTO(含校验注解) │ │ └── response/ 17 个响应 DTO │ ├── service/ 17 个 Service 接口 │ ├── service/impl/ 17 个 Service 实现(骨架) │ └── controller/ 14 个 Controller └── src/main/resources ├── application.yml 主配置 ├── application-dev.yml 开发环境 └── mapper/ MyBatis XML(5 个含自定义 SQL) ├── ResourceMapper.xml FULLTEXT 全文检索 ├── ResourceTagMapper.xml ├── UploadChunkMapper.xml ├── DownloadLogMapper.xml └── ViewLogMapper.xml ``` ## 启动前置依赖 1. **MySQL 8.0+**:执行 `../数据库DDL脚本.sql` 建库建表(含初始管理员 admin/admin123) 2. **Redis 7.x**:默认 `localhost:6379` 3. **MinIO**:默认 `http://localhost:9000`,账号 `minioadmin/minioadmin`,需预先创建 bucket `resource-platform` ## 启动 ```bash cd resource-platform/backend mvn spring-boot:run ``` 启动后: - 后端服务:http://localhost:8080 - 接口文档:http://localhost:8080/swagger-ui.html - 健康检查:http://localhost:8080/actuator/health ## 关键约定 - **统一返回**:`{code, message, data}`,分页 `{page, size, total, list}` - **鉴权**:JWT 无状态,header `Authorization: Bearer ` - **权限模型**:`@PreAuthorize("hasRole('ADMIN')")` 控制后台接口 - **可见性**:0 公开 / 1 团队 / 2 私有(仅上传者 + 管理员可见) - **文件存储**:MinIO,`file_key` 格式 `{category}/{yyyy/MM}/{uuid}.{ext}` - **大文件上传**:5MB 分片 + 断点续传 + 秒传 hash 校验 - **逻辑删除**:资源 status=0 软删,30 天后物理清理(定时任务 TODO) ## 已完成模块(M1 骨架阶段) - [x] 项目骨架 + 配置 + 公共层 - [x] 用户/认证模块(登录/注册/JWT) - [x] 资源模块骨架(含分片上传/秒传/下载/预览/版本) - [x] 分类/标签骨架 - [x] 评论/评分/收藏/关注骨架 - [x] 通知/举报骨架 - [x] 搜索骨架(MySQL FULLTEXT) - [x] 统计骨架(排行/贡献度/存储/趋势) - [x] 后台管理骨架(用户/操作日志/系统配置) ## 后续待补(M2-M8) - [ ] M2: 资源主流程真实实现(MinIO 合并分片、断点续传、秒传 hash 缓存) - [ ] M3: 分类树 + 标签 + 关键词搜索真实查询 - [ ] M4: 权限细化(可见性三级校验落地到所有接口) - [ ] M5: 评论楼中楼查询、通知触达 - [ ] M6: 统计聚合 SQL、存储监控告警 - [ ] M7: 前端 Vue3 联调 - [ ] M8: Docker Compose 部署 + 备份脚本 ## 接口清单 详见需求分析文档 §7。Swagger 启动后可在 `/swagger-ui.html` 查看完整 API。 主要分组: | 路径前缀 | 模块 | |---|---| | /api/auth | 认证 | | /api/user | 用户资料 | | /api/resource | 资源(含上传/下载/版本) | | /api/category | 分类 | | /api/tag | 标签 | | /api/comment | 评论 | | /api/rating | 评分 | | /api/favorite | 收藏 | | /api/follow | 关注 | | /api/notification | 通知 | | /api/report | 举报 | | /api/search | 搜索 | | /api/stat | 统计 | | /api/admin | 后台管理(仅管理员) | minio启动: ``` cd /usr/local/bin MINIO_ROOT_USER=minioadmin MINIO_ROOT_PASSWORD=minioadmin ./minio server /minio --console-address ":9001" ```