|
|
@@ -1,45 +0,0 @@
|
|
|
-# 项目头像上传与获取功能开发概要
|
|
|
-
|
|
|
-## 1. 配置文件调整
|
|
|
-- 在 `src/main/resources/application.yml` 增加如下配置:
|
|
|
-
|
|
|
-```yaml
|
|
|
-avatar:
|
|
|
- root-path: D:/avatar-storage/
|
|
|
- max-size: 2MB
|
|
|
- allowed-types: jpg,png,jpeg,webp
|
|
|
-```
|
|
|
-
|
|
|
-## 2. Controller 层
|
|
|
-- 新增 `UserAvatarController`,实现:
|
|
|
- - `POST /user/avatar/upload`:接收 MultipartFile,校验类型/大小,仅允许当前用户上传,调用 Service 处理,返回 `R<String>`(data 字段为相对路径,例如 `userId/timestamp.ext`)。未经认证时返回 `R.fail(401, "未认证", null)`。
|
|
|
- - `GET /user/avatar/{userId}`:根据 userId 查询头像相对路径,返回图片流,找不到或文件不存在返回404。Controller 会尝试用 `Files.probeContentType` 标定 Content-Type。
|
|
|
-- 接口需加 Swagger 注解,响应格式与项目一致。
|
|
|
-
|
|
|
-## 3. Service 层
|
|
|
-- 增加 `UserAvatarService` 及实现类:`UserAvatarServiceImpl`,负责:
|
|
|
- - 头像存储路径生成(默认 `{root}/{userId}/{timestamp}.{ext}`)、文件校验(由 `FileUtils` 验证类型与大小)、保存本地、数据库 `avatar` 字段更新。若发生参数异常(如文件类型或大小),服务抛出 `CustomException` 并使用 `ErrorCode.PARAMETER_ERROR` 返回前端。
|
|
|
- - 获取头像文件流,处理异常和默认头像。
|
|
|
- - 日志记录(info/error,含 userId、文件名、IP)。
|
|
|
-
|
|
|
-## 4. Model/VO 层
|
|
|
-- `UserInfo` 实体已含 avatar 字段,无需变更。
|
|
|
-- 如有头像相关 VO,userId 字段类型需为 String。
|
|
|
-
|
|
|
-## 5. 工具类/配置类
|
|
|
-- 已有 `AvatarProperties` 配置类,前缀 `avatar`:`root-path`、`max-size`、`allowed-types`,`maxSize` 默认 2MB,`allowedTypes` 默认为 `jpg,png,jpeg,webp`。
|
|
|
-
|
|
|
-## 6. 日志与安全
|
|
|
-- 上传/更新/异常操作按规范记录日志。
|
|
|
-- 上传接口需校验当前用户,仅允许本人操作。
|
|
|
-- 获取接口需防止路径穿越。
|
|
|
-
|
|
|
-## 7. 测试
|
|
|
-- 增加单元测试和集成测试,覆盖文件校验、路径生成、接口兼容性等。
|
|
|
-
|
|
|
-## 8. 文档与Swagger
|
|
|
-- 补充接口注解,确保 Swagger 文档完整,泛型返回类型文档化。
|
|
|
-
|
|
|
----
|
|
|
-
|
|
|
-如需详细开发步骤可进一步细化。
|