f5a89634c4
文件上传从本地磁盘改为可切换的对象存储(默认 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
356 lines
12 KiB
XML
356 lines
12 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||
<modelVersion>4.0.0</modelVersion>
|
||
|
||
<groupId>com.gxwebsoft</groupId>
|
||
<artifactId>com-gxwebsoft-server</artifactId>
|
||
<version>1.5.2</version>
|
||
|
||
<name>com-gxwebsoft-api</name>
|
||
<description>WebSoftApi project for Spring Boot</description>
|
||
|
||
<parent>
|
||
<groupId>org.springframework.boot</groupId>
|
||
<artifactId>spring-boot-starter-parent</artifactId>
|
||
<version>2.5.4</version>
|
||
<relativePath/> <!-- lookup parent from repository -->
|
||
</parent>
|
||
|
||
<properties>
|
||
<java.version>1.8</java.version>
|
||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||
<!-- Spring Boot 2.5.4 默认把 okhttp 钉在 3.14.9,而 minio 8.5.x 需要 4.x,
|
||
否则启动时 io.minio.S3Base 会报 RequestBody.create 方法不存在。
|
||
okhttp 4.x 依赖 kotlin-stdlib,故一并覆盖 Spring Boot 管理的 kotlin 版本。 -->
|
||
<okhttp3.version>4.12.0</okhttp3.version>
|
||
<kotlin.version>1.9.25</kotlin.version>
|
||
</properties>
|
||
|
||
<dependencies>
|
||
<!-- spring-boot-devtools -->
|
||
<dependency>
|
||
<groupId>org.springframework.boot</groupId>
|
||
<artifactId>spring-boot-devtools</artifactId>
|
||
<scope>runtime</scope>
|
||
<optional>true</optional>
|
||
</dependency>
|
||
|
||
<!-- spring-boot-test -->
|
||
<dependency>
|
||
<groupId>org.springframework.boot</groupId>
|
||
<artifactId>spring-boot-starter-test</artifactId>
|
||
<scope>test</scope>
|
||
</dependency>
|
||
|
||
<!-- spring-boot-web -->
|
||
<dependency>
|
||
<groupId>org.springframework.boot</groupId>
|
||
<artifactId>spring-boot-starter-web</artifactId>
|
||
</dependency>
|
||
|
||
<!-- spring-boot-aop -->
|
||
<dependency>
|
||
<groupId>org.springframework.boot</groupId>
|
||
<artifactId>spring-boot-starter-aop</artifactId>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>org.springframework.boot</groupId>
|
||
<artifactId>spring-boot-starter-websocket</artifactId>
|
||
</dependency>
|
||
|
||
<!-- spring-boot-configuration-processor -->
|
||
<dependency>
|
||
<groupId>org.springframework.boot</groupId>
|
||
<artifactId>spring-boot-configuration-processor</artifactId>
|
||
<optional>true</optional>
|
||
</dependency>
|
||
|
||
<!-- lombok -->
|
||
<dependency>
|
||
<groupId>org.projectlombok</groupId>
|
||
<artifactId>lombok</artifactId>
|
||
<optional>true</optional>
|
||
</dependency>
|
||
|
||
<!-- mysql -->
|
||
<dependency>
|
||
<groupId>mysql</groupId>
|
||
<artifactId>mysql-connector-java</artifactId>
|
||
<scope>runtime</scope>
|
||
</dependency>
|
||
|
||
<!-- druid -->
|
||
<dependency>
|
||
<groupId>com.alibaba</groupId>
|
||
<artifactId>druid-spring-boot-starter</artifactId>
|
||
<version>1.2.6</version>
|
||
</dependency>
|
||
|
||
<!-- mybatis-plus -->
|
||
<dependency>
|
||
<groupId>com.baomidou</groupId>
|
||
<artifactId>mybatis-plus-boot-starter</artifactId>
|
||
<version>3.4.3.3</version>
|
||
</dependency>
|
||
|
||
<!-- mybatis-plus-generator -->
|
||
<dependency>
|
||
<groupId>com.baomidou</groupId>
|
||
<artifactId>mybatis-plus-generator</artifactId>
|
||
<version>3.4.1</version>
|
||
</dependency>
|
||
|
||
<!-- mybatis-plus-join -->
|
||
<dependency>
|
||
<groupId>com.github.yulichang</groupId>
|
||
<artifactId>mybatis-plus-join-boot-starter</artifactId>
|
||
<version>1.4.5</version>
|
||
</dependency>
|
||
|
||
<!-- hutool -->
|
||
<dependency>
|
||
<groupId>cn.hutool</groupId>
|
||
<artifactId>hutool-core</artifactId>
|
||
<version>5.8.25</version>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>cn.hutool</groupId>
|
||
<artifactId>hutool-extra</artifactId>
|
||
<version>5.8.25</version>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>cn.hutool</groupId>
|
||
<artifactId>hutool-http</artifactId>
|
||
<version>5.8.16</version>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>cn.hutool</groupId>
|
||
<artifactId>hutool-crypto</artifactId>
|
||
<version>5.8.11</version>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>org.jsoup</groupId>
|
||
<artifactId>jsoup</artifactId>
|
||
<version>1.17.2</version>
|
||
</dependency>
|
||
|
||
<!-- easy poi -->
|
||
<dependency>
|
||
<groupId>cn.afterturn</groupId>
|
||
<artifactId>easypoi-base</artifactId>
|
||
<version>4.4.0</version>
|
||
<exclusions>
|
||
<exclusion>
|
||
<groupId>org.apache.poi</groupId>
|
||
<artifactId>poi-ooxml-schemas</artifactId>
|
||
</exclusion>
|
||
</exclusions>
|
||
</dependency>
|
||
<!-- apache word-->
|
||
<dependency>
|
||
<groupId>org.apache.poi</groupId>
|
||
<artifactId>poi</artifactId>
|
||
<version>5.3.0</version>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>org.apache.poi</groupId>
|
||
<artifactId>poi-ooxml</artifactId>
|
||
<version>5.3.0</version>
|
||
<exclusions>
|
||
<exclusion>
|
||
<groupId>org.apache.poi</groupId>
|
||
<artifactId>poi-ooxml-schemas</artifactId>
|
||
</exclusion>
|
||
</exclusions>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>commons-io</groupId>
|
||
<artifactId>commons-io</artifactId>
|
||
<version>2.16.1</version>
|
||
</dependency>
|
||
|
||
<!-- tika, 用于FileServer获取content-type -->
|
||
<dependency>
|
||
<groupId>org.apache.tika</groupId>
|
||
<artifactId>tika-core</artifactId>
|
||
<version>2.1.0</version>
|
||
</dependency>
|
||
|
||
<!-- minio sdk, 兼容 S3 协议对象存储(RustFS/MinIO) -->
|
||
<dependency>
|
||
<groupId>io.minio</groupId>
|
||
<artifactId>minio</artifactId>
|
||
<version>8.5.17</version>
|
||
</dependency>
|
||
|
||
<!-- spring-boot-mail -->
|
||
<dependency>
|
||
<groupId>org.springframework.boot</groupId>
|
||
<artifactId>spring-boot-starter-mail</artifactId>
|
||
</dependency>
|
||
|
||
<!-- 模板引擎, 用于邮件、代码生成等 -->
|
||
<dependency>
|
||
<groupId>com.ibeetl</groupId>
|
||
<artifactId>beetl</artifactId>
|
||
<version>3.6.1.RELEASE</version>
|
||
</dependency>
|
||
|
||
<!-- swagger -->
|
||
<dependency>
|
||
<groupId>io.springfox</groupId>
|
||
<artifactId>springfox-boot-starter</artifactId>
|
||
<version>3.0.0</version>
|
||
</dependency>
|
||
|
||
<!-- spring security -->
|
||
<dependency>
|
||
<groupId>org.springframework.boot</groupId>
|
||
<artifactId>spring-boot-starter-security</artifactId>
|
||
</dependency>
|
||
|
||
<!-- jjwt -->
|
||
<dependency>
|
||
<groupId>io.jsonwebtoken</groupId>
|
||
<artifactId>jjwt-impl</artifactId>
|
||
<version>0.11.2</version>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>io.jsonwebtoken</groupId>
|
||
<artifactId>jjwt-jackson</artifactId>
|
||
<version>0.11.2</version>
|
||
</dependency>
|
||
|
||
<!-- 图形验证码 -->
|
||
<dependency>
|
||
<groupId>com.github.whvcse</groupId>
|
||
<artifactId>easy-captcha</artifactId>
|
||
<version>1.6.2</version>
|
||
</dependency>
|
||
|
||
<!--Redis-->
|
||
<dependency>
|
||
<groupId>org.springframework.boot</groupId>
|
||
<artifactId>spring-boot-starter-data-redis</artifactId>
|
||
</dependency>
|
||
|
||
<!-- https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk15on -->
|
||
<dependency>
|
||
<groupId>org.bouncycastle</groupId>
|
||
<artifactId>bcprov-jdk15on</artifactId>
|
||
<version>1.70</version>
|
||
</dependency>
|
||
<!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
|
||
<dependency>
|
||
<groupId>commons-logging</groupId>
|
||
<artifactId>commons-logging</artifactId>
|
||
<version>1.2</version>
|
||
</dependency>
|
||
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
|
||
<dependency>
|
||
<groupId>com.alibaba</groupId>
|
||
<artifactId>fastjson</artifactId>
|
||
<version>2.0.20</version>
|
||
</dependency>
|
||
|
||
<!--二维码-->
|
||
<dependency>
|
||
<groupId>com.google.zxing</groupId>
|
||
<artifactId>core</artifactId>
|
||
<version>3.3.3</version>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>com.google.code.gson</groupId>
|
||
<artifactId>gson</artifactId>
|
||
<version>2.8.0</version>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>org.json</groupId>
|
||
<artifactId>json</artifactId>
|
||
<version>20170516</version>
|
||
</dependency>
|
||
|
||
<!--微信小程序-->
|
||
<dependency>
|
||
<groupId>com.github.binarywang</groupId>
|
||
<artifactId>weixin-java-miniapp</artifactId>
|
||
<version>4.6.0</version>
|
||
</dependency>
|
||
<!--微信支付-->
|
||
<dependency>
|
||
<groupId>com.github.wechatpay-apiv3</groupId>
|
||
<artifactId>wechatpay-java</artifactId>
|
||
<version>0.2.17</version>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>com.alibaba.nls</groupId>
|
||
<artifactId>nls-sdk-tts</artifactId>
|
||
<version>2.2.19</version>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>javax.xml.bind</groupId>
|
||
<artifactId>jaxb-api</artifactId>
|
||
<version>2.3.0</version>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>org.glassfish.jaxb</groupId>
|
||
<artifactId>jaxb-runtime</artifactId>
|
||
<version>2.3.8</version>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>javax.activation</groupId>
|
||
<artifactId>activation</artifactId>
|
||
<version>1.1.1</version>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>com.aliyun</groupId>
|
||
<artifactId>aliyun-java-sdk-core</artifactId>
|
||
<version>3.7.1</version>
|
||
</dependency>
|
||
</dependencies>
|
||
|
||
<build>
|
||
<resources>
|
||
<resource>
|
||
<directory>src/main/java</directory>
|
||
<includes>
|
||
<include>**/*Mapper.xml</include>
|
||
</includes>
|
||
</resource>
|
||
<resource>
|
||
<directory>src/main/resources</directory>
|
||
<includes>
|
||
<include>**</include>
|
||
</includes>
|
||
</resource>
|
||
</resources>
|
||
<plugins>
|
||
<plugin>
|
||
<groupId>org.springframework.boot</groupId>
|
||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||
<version>2.5.4</version>
|
||
<configuration>
|
||
<excludes>
|
||
<exclude>
|
||
<groupId>org.projectlombok</groupId>
|
||
<artifactId>lombok</artifactId>
|
||
</exclude>
|
||
</excludes>
|
||
</configuration>
|
||
</plugin>
|
||
</plugins>
|
||
</build>
|
||
|
||
<repositories>
|
||
<repository>
|
||
<id>aliYunMaven</id>
|
||
<url>https://maven.aliyun.com/repository/public</url>
|
||
</repository>
|
||
</repositories>
|
||
|
||
</project>
|