weicw-dshsa f5a89634c4 feat(file): 文件存储接入 RustFS(S3),修正文件外链域名与路径
文件上传从本地磁盘改为可切换的对象存储(默认 s3,type 改回 local 即退回原行为):

- 新增 common.core.storage 包:ObjectStorage 接口 + S3ObjectStorage(minio 8.5.17)
  + NoopObjectStorage + FileStorageService + StorageConfig + StoredFile;
  key 规则沿用 file/yyyyMMdd/uuid.ext、缩略图 file/thumbnail/...,桶内结构对齐旧磁盘目录
- 读取仍走后端代理 GET /api/file/**:s3 模式下首次读取物化到本地 cache-path 再返回,
  对外 URL 不变;历史本地文件一律作废,不做回退兼容
- ConfigProperties 增加 storage 配置块,endpoint/access-key/secret-key 支持环境变量覆盖
  (RUSTFS_ENDPOINT / RUSTFS_ACCESS_KEY / RUSTFS_SECRET_KEY),配置非法时启动即失败
- FileRecordService.deleteFileAsync 改为按 path 删除,本地与对象存储同时清理
- pom 固定 okhttp3.version=4.12.0、kotlin.version=1.9.25:Spring Boot 2.5.4 默认的
  okhttp 3.14.9 与 minio 所需的 okhttp 4.12.0 冲突,会导致启动即
  NoClassDefFoundError: okhttp3/ConnectionPool

同时修正文件外链拼接(以下均为改造前就存在的问题):

- application-prod.yml:server-url / file-server 由失效的 tuanwei-api.gxwebsoft.com
  改为生产实际域名 https://twai-api.gxmu.edu.cn(与 admin .env.production、
  uniapp request.js 一致),此前上传返回的 url 指向旧域名导致访问不到
- FileController 抽出 fileBaseUrl(),分页/列表原来漏了 /api/file 前缀
- OpenFileController 同样补 /api/open/file 前缀
- TzbcyMaterialServiceImpl 下载链接补 /api/file/download
2026-10-21 23:11:45 +08:00
2026-07-20 11:48:06 +08:00
2023-06-03 23:56:49 +08:00
2026-09-22 20:35:21 +08:00
2026-07-20 11:48:06 +08:00
2023-06-03 23:56:49 +08:00
2024-01-31 14:55:59 +08:00
2023-06-03 23:56:49 +08:00
2026-07-20 11:48:06 +08:00
2023-06-03 23:56:49 +08:00
2026-07-20 11:48:06 +08:00
2025-05-22 10:27:57 +08:00
S
Description
No description provided
13 MiB
Languages
Java 99.5%
Shell 0.5%